猿问

带有 shiro 的多个身份验证过滤器

我使用 shiro 实现了一个自定义身份验证过滤器,但想使用基本身份验证作为备份选项。这意味着 - 如果用户拥有我的自定义过滤器的正确凭据,他将登录。如果没有,我想检查用户是否提供了基本的 authc 标头。


这是我的 shiro.ini


[main]

myAuthc = com.company.security.MyAuthcFilter

myRealm = com.company.security.MyAuthcRealm

myRealm.authenticationTokenClass = com.company.security.MyAuthcToken

securityManager.realms = $myRealm


# user for the basic authc filter

[users]

testuser = testpass


[urls]

/web/** = myAuthc, authcBasic

问题是myAuthc得到评估,authcBasic而不是!在我的测试用例中,客户端仅提供基本身份验证标头,这意味着myAuthc不会对用户进行身份验证。我以为,将评估链中的下一个过滤器,但这不会发生!


在测试场景中,isAccessAllowed()和onAccessDenied()方法都myAuthc返回false。


顺便说一句,当我请求时/web/hello,我实际上收到了HTTP 200,但是响应体是空的 - 没有来自hello资源的信息。


是否可以组合这样的过滤器?


翻翻过去那场雪
浏览 253回答 2
2回答

素胚勾勒不出你

为了记录,onAccessDenied()应该返回true过滤器链才能继续。
随时随地看视频慕课网APP

相关分类

Java
我要回答