⑴ 集成shiro 什么情况下会session丢失
技术分析:
1、首先如果登录成功,Shiro的DefaultWebSessionManager会默认通过如下方式添加JSESSIONID Cookie到响应:
查看复制到剪贴板打印
private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
if (currentId == null) {
String msg = "sessionId cannot be null when persisting for subsequent requests.";
throw new IllegalArgumentException(msg);
}
Cookie template = getSessionIdCookie(); //此处得到JSESSIONID的一个cookie模板
Cookie cookie = new SimpleCookie(template);
String idString = currentId.toString();
cookie.setValue(idString);
cookie.saveTo(request, response);
log.trace("Set session ID cookie for session with id {}", idString);
}
2、如果客户端访问时会带着个Cookie回来;但是注意:容器不认识的(Web容器并没有真正创建HttpSession);Shiro默认情况下会生成自己的一套Session,默认是MemorySessionDAO;即放到内存中的;和Web容器没有任何关系;
3、 接着访问一个错误的页面(如jsp);此时到了Shiro过滤器,过滤器通过;然后最后forward到这个错误页面;大家应该知道默认情况下jsp页面是需要session的;所以此时jsp会调用request.getSession() 此时创建了一个Session;这会往Cookie写JSESSIONID的;
⑵ shiro框架cookies被禁怎么处理
那只能带着口令或者Sessionid走了,是一个意思。
推荐一套完整的Shiro Demo,免费的。
Shiro介绍文档内:http://www.sojson.com/shiro
Demo已经部署到线上,地址是http://shiro.itboy.net,
管理员帐号:admin,密码:sojson.com 如果密码错误,请用sojson。
PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是,容每20分钟会把数据初始化一次。建议自己下载源码,让Demo跑起来,然后跑的更快。
⑶ shiro记住我cookie无法添加 按照网上的说法 把配置文件中所有的配置都写了 javabea
ie11下查看cookie:自1:IE11=》F12打开开发人员工具2:开发人员工具=》网络F5启用网络流量捕获3:IE11=》输入和访问相关网址4:开发人员工具=》网络=》详细信息=》Cookie如果你只在java后台写的cookie,前端浏览器当然看不到
⑷ shiro 自定义cookie超时时间怎么弄
默认是HttpOnly的,即浏览器关闭便失效。
如果你想要修改Cookie,那么请参考如下配置
@Bean
def securityManager() {
def securityManager = new DefaultWebSecurityManager()
securityManager.realm = realm()
securityManager.cacheManager = cacheManager()
securityManager.sessionManager = sessionManager()
securityManager.rememberMeManager = rememberMeManager()
return securityManager
}
def sessionManager() {
def sessionManager = new DefaultWebSessionManager()
def cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME)
//cookie.setHttpOnly(true)
cookie.maxAge = 24 * 60 * 60
sessionManager.sessionIdCookie = cookie
return sessionManager
}
def rememberMeManager() {
def rememberMeManager = new CookieRememberMeManager()
def cookie = new SimpleCookie(CookieRememberMeManager.DEFAULT_REMEMBER_ME_COOKIE_NAME)
//cookie.setHttpOnly(true)
//cookie.setMaxAge(Cookie.ONE_YEAR)
cookie.maxAge = 60 * 60 * 24 * 7
rememberMeManager.cookie = cookie
return rememberMeManager
}
⑸ 怎么删除shiro的cookie
直接获取所有Cookie,循环删除即可
推荐一套完整的Shiro Demo,免费的。
Shiro介绍文档:http://www.sojson.com/shiro
Demo已经部署版到线上,地址是http://shiro.itboy.net,
管理员帐号:admin,密码:sojson.com 如果密码错误,请用sojson。
PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是,权每20分钟会把数据初始化一次。建议自己下载源码,让Demo跑起来,然后跑的更快。
⑹ shiro 记住密码怎么获取cookie信息
你获取也没用,要解密,Cookie信息获取和shiro没关系,你用request获取就可以了。内
推荐一套容完整的Shiro Demo,免费的。
Shiro介绍文档:http://www.sojson.com/shiro
Demo已经部署到线上,地址是http://shiro.itboy.net,
管理员帐号:admin,密码:sojson.com 如果密码错误,请用sojson。
PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是,每20分钟会把数据初始化一次。建议自己下载源码,让Demo跑起来,然后跑的更快。