使用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).
我找不到有关此错误的任何信息,也无法找到如何正确实现自定义域的任何示例。
有人能指出我正确的方向吗?感谢。
答案 0 :(得分:0)
嗯,这经常发生(烦人)。在睡了一觉后,我意识到了
securityManager.realms = $mockRealm
可能是 shiro.ini 的错误部分
在[main]
下移动它并且它有效。
有时你只需要忘记一段时间才能重新审视它们。