目前,我在控制器和 gsp 页面中都使用默认的 HttpSession 对象:
在控制器中:
...
session.mykey = anObject; // adding an object to session
...
if (session.otherkey) { // performing some checking
在普惠制中:
...
<g:if test="${session.mykey}">
...
我想要一个“记住我”的功能。Shiro 已经内置了它。但是,据我了解,为了做到这一点,我必须使用 shiro 本机会话模式(在 Config.groovy:security.shiro.session.mode="native")。默认情况下,它会保持会话状态,因此只要 cookie 过期或用户注销,对象就会保留在会话中。
我的理解对吗?
然后我将不得不将我的控制器更改为:
def shiroSession = SecurityUtils.subject.session
shiroSession.setAttribute("mykey",anObject)
....
if (shiroSession.getAttribute("otherkey") ){
我对此的看法:
<g:if test="${SecurityUtils.subject.session.getAttribute('mykey')}">
所以,我的问题是:
- 那正确吗?
- 我不能只使用以前的方式访问会话吗?
- 我是否必须在某些配置中关闭默认的 http 会话?