我在项目中配置了shiro以进行用户名/密码验证。 '过滤器'和'网址'如下。
[filters]
authc.loginUrl = /login.jsp
shiro.loginUrl = /login.jsp
[urls]
/login.jsp = anon, authc
/index.jsp = authc
现在,当我们访问index.jsp时,它会重定向到login.jsp,即使我只是刷新index.jsp。
如果我刷新index.jsp,如果缓存仍然知道该用户已经登录,我该如何让它继续保持在index.jsp上?
顺便说一句,我还没有配置缓存管理器,因此在启动时它会弹出错误,如'org.apache.shiro.realm.AuthorizingRealm - 没有设置缓存或缓存管理器属性。无法获取授权缓存。我可以配置如下(我只使用shiro core& web)?
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $builtInCacheManager
答案 0 :(得分:1)
刚开始shiro但这个链接应该有帮助:http://raibledesigns.com/rd/entry/java_web_application_security_part2请参阅“结论”部分。最值得注意的是authc如何在当前会话中强制执行身份验证(据我所知,这取决于当前的线程调用,可能使用本地线程),因此您不需要authc但需要特定的角色。或者像示例案例中的用户,因为这意味着您是一个知道用户...这与经过身份验证的用户不同(更强的陈述)。
此外,如果区别不明确:使用shiro进行身份验证意味着您刚刚输入了用户/通行证,您知道必须是用户。记住的用户已登录,但如果会话未到期,您仍然登录,您可以离开,其他人可以坐下来。还有一些情况,例如大额支付或其他安全操作(警察或其他敏感信息),您可能需要专门为该服务请求凭据。