【发布时间】:2019-01-05 23:00:01
【问题描述】:
我使用 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 不会对用户进行身份验证。我认为,将评估链中的下一个过滤器,但这不会发生!
在测试场景中,myAuthc 的isAccessAllowed() 和onAccessDenied() 方法都返回false。
顺便说一句,当我请求 /web/hello 时,我实际上收到了 HTTP 200,但响应正文为空 - 没有来自 hello 资源的信息。
可以这样组合过滤器吗?
【问题讨论】:
标签: java authentication jakarta-ee shiro