尝试为Shiro使用自定义域时出错

时间:2015-04-01 17:32:47

标签: jsf-2 shiro

使用BalusC教程实现shiro到JSF应用程序 http://balusc.blogspot.fi/2013/01/apache-shiro-is-it-ready-for-java-ee-6.html

目前我正在尝试在示例的基础上添加我自己的自定义域,但我显然遗漏了一些东西。

我有shiro.ini如下(主要是从给定的教程复制而来,可能都没有必要):

[main]
user = com.example.filter.AjaxSessionFilter
mockRealm = com.example.realm.MockRealm
authc.loginUrl = /Login.xhtml
user.loginUrl = /Login.xhtml

[users]
admin = password

[urls]
/Login.xhtml = user
/* = user
securityManager.realms = $mockRealm

我的MockRealm简而言之:

import org.apache.shiro.realm.AuthorizingRealm;

public class MockRealm extends AuthorizingRealm { /* Implement stuff */ }

我在GlassFish v4.1上运行它。到目前为止,一切都正常工作,直到我尝试添加此自定义领域。这会导致以下错误:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: There is no filter with name '$mockRealm' to apply to chain [securityManager.realms] in the pool of available Filters.  Ensure a filter with that name/path has first been registered with the addFilter method(s). 

我找不到有关此错误的任何信息,也无法找到如何正确实现自定义域的任何示例。

有人能指出我正确的方向吗?感谢。

1 个答案:

答案 0 :(得分:0)

嗯,这经常发生(烦人)。在睡了一觉后,我意识到了 securityManager.realms = $mockRealm 可能是 shiro.ini 的错误部分 在[main]下移动它并且它有效。
有时你只需要忘记一段时间才能重新审视它们。