我正在一个项目中,我们正在使用Apache Shiro来提高安全性。 现在,我不确定问题是在Shrio配置中还是在其他地方。
当用户输入凭据并使用基本身份验证进行身份验证时,会发生用户名和密码的值,直到浏览器关闭为止。我已经在Firefox和Chrome中尝试过这种行为了。
根据我的理解,这听起来像是Shiro“RememberMe”功能,但我“想”我关闭了它。
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken = (UsernamePasswordToken) token;
logger.info("Remember Me active ? {}", upToken.isRememberMe());
打印: 09:44:00,323 INFO [TestRealm]还记得我活跃吗?假
我也尝试过使用shiro.ini文件中配置的Shiro注销
[main]
...
logout.redirectUrl = /logout.jsp
...
[url]
/logout = logout
logout.jsp如下所示:
<%@ page import="org.apache.shiro.SecurityUtils" %>
<% SecurityUtils.getSubject().logout();%>
You have succesfully logged out.
如果没有这个帮助,只要浏览器没有关闭,会话仍处于活动状态。在退出页面上,使用Chrome-developer,我可以看到cookie已在资源中删除。
shiro.ini完整档案
[main]
authBasicRealm = se.test.TestRealm
securityManager.realms = $authBasicRealm
#builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
#securityManager.cacheManager = $builtInCacheManager
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
#securityManager.sessionManager.sessionIdCookieEnabled = false
# cookie for single sign on
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = test.session
cookie.path = /test
cookie.maxAge = 60
#cookie.secure = true
cookie.httpOnly = false
sessionManager.sessionIdCookie = $cookie
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionManager.sessionDAO = $sessionDAO
securityManager.sessionManager = $sessionManager
logout.redirectUrl = /logout.jsp
[users]
# format: username = password, role1, role2, ..., roleN
admin = admin, 4
user = user, 2
[roles]
admin = *
user = *
#User Get Specified
1 = 1
#User Get All
2 = 1
#Create Put Update
3 = 2:*
#Admin
4 = admin:*
test = 2:*
[urls]
/logout = logout
/** = authcBasic
最佳, 亨利克