shiro 和 SESSSION

shiro 在web项目里默认使用的是web容器提供的session,也就是说shiro使用的session是web容器产生的,并不是自己产生的,在用于非web环境时可用其他来源代替。在web工程启动的时候它就和容器绑定在了一起,这是通过web.xml里面的shiroFilter实现的。通过session.getSession()方法会在浏览器cokkice产生JESSIONID,当关闭浏览器,此JESSIONID就被清除掉了。再次打开浏览器访问需重新登录,此时服务器内存中仍然存有此session,并没有失效。只是浏览器没有发送与之关联的JESSISIONID,所以服务器需要重新产生一个新的JESSISIONID返回浏览器。如果要实现自动登录,需自己写session保存起来实现。

 

 另外,如果没有页面请求发起,也就没有session生成,此时shiro获取subject不可用。会爆出异常。

你可能感兴趣的