It will be removed in 2.0. Until then, only critical issues associated with
the IniShiroFilter would be fixed, but it should function the same way
until then.

Dynamic configuration support is a big range.  That said, there is support
for annotations, Guice, and Spring, which could be considered dynamic.  1.4
will also have support for property interpolation (but currently it is only
the right hand side of the config line (i.e: myProperty =
${mySystemProperty} )

Take a look at the IniWebEnvironment, and if you can think of a way to make
it a bit more generic for you needs let us know!


On Tue, Nov 8, 2016 at 10:21 AM, Bengt Rodehav <[email protected]> wrote:

> OK - thanks,
>
> Wouldn't it be nice to support dynamic configuration out-of-the-box?
>
> When do you plan to remove the IniShiroFilter? Is it safe to use until
> then or could it cause problems?
>
> /Bengt
>
> 2016-11-08 15:44 GMT+01:00 Brian Demers <[email protected]>:
>
>>
>> You could extend the 'IniWebEnvironment' and do something similar.  Just
>> set the servlet init param 'shiroEnvironmentClass' to your new class.
>>
>> Basically the Ini processing _should_ now happen in the 'Environment'
>> instead of directly in the Filter.
>>
>> Let me know if that doesn't help.
>>
>>
>> On Tue, Nov 8, 2016 at 3:25 AM, Bengt Rodehav <[email protected]> wrote:
>>
>>> I'm migrating from an older version of Shiro to Shiro 1.3.2.
>>>
>>> I noticed that the IniFilter has been deprecated. I used the IniFilter
>>> to dynamically create the Shiro configuration as follows:
>>>
>>>       Dictionary<String, String> filterProps = new Hashtable<String,
>>> String>();
>>>       filterProps.put("config", buildShiroConfig());
>>>       IniShiroFilter iniFilter = new IniShiroFilter();
>>>       mWebService.registerFilter(iniFilter, new String[] { "/*" }, new
>>> String[] { VIEW_SERVLET_NAME }, filterProps, mHttpContext);
>>>
>>> My method "buildShiroConfig" looks as follows:
>>>
>>>   private String buildShiroConfig() {
>>>     StringBuilder sb = new StringBuilder();
>>>
>>>     sb.append("[main]\n");
>>>
>>>     sb.append("authc.loginUrl = " + mRootUrl + "/admin/login\n");
>>>     sb.append("authc.successUrl = " + mRootUrl + "/admin/index.html\n");
>>>     sb.append("logout.redirectUrl = " + mRootUrl + "/admin/login\n");
>>>     sb.append("ajaxFilter = se.digia.hp.web.AjaxFormAuthen
>>> ticationFilter\n");
>>>
>>>     sb.append("ds = org.apache.shiro.jndi.JndiObjectFactory\n");
>>>     sb.append("ds.resourceName = osgi:service/javax.sql.DataSource/(
>>> osgi.jndi.service.name=jdbc/hpnojta)\n");
>>>     sb.append("jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm\n");
>>>     sb.append("jdbcRealm.dataSource = $ds\n");
>>>     sb.append("jdbcRealm.authenticationQuery = SELECT password FROM
>>> _user WHERE name = ?\n");
>>>
>>>     sb.append("[urls]\n");
>>>     sb.append(mRootUrl + "/api/login = anon\n");
>>>     sb.append(mRootUrl + "/api/getCurrentUser = anon\n");
>>>     sb.append(mRootUrl + "/api/** = ajaxFilter\n");
>>>     sb.append(mRootUrl + "/admin/login = authc\n");
>>>     sb.append(mRootUrl + "/admin/logout = logout\n");
>>>     sb.append(mRootUrl + "/admin/** = authc\n");
>>>
>>>     // sb.append("[users]\n");
>>>     // sb.append("user=password\n");
>>>
>>>     return sb.toString();
>>>   }
>>>
>>> Most of the information is static but I have a configurable root URL
>>> which requires me to create the configuration dynamically. How can I do
>>> this using ShiroFilter?
>>>
>>> /Bengt
>>>
>>>
>>>
>>
>

Reply via email to