作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我在 Controller 和 gsp 页面中使用默认的 HttpSession 对象:
在 Controller 中:
...
session.mykey = anObject; // adding an object to session
...
if (session.otherkey) { // performing some checking
在普惠制中:
...
<g:if test="${session.mykey}">
...
我想要一个“记住我”的功能。 Shiro 已经内置了它。但是,据我了解,为了做到这一点,我必须使用 shiro native session 模式(在 Config.groovy 中:security.shiro.session.mode="native")。默认情况下,它会保留 session 状态,因此只要 cookie 过期或用户注销,对象就会保留在 session 中。
我的理解对吗?
然后我必须将我的 Controller 更改为:
def shiroSession = SecurityUtils.subject.session
shiroSession.setAttribute("mykey",anObject)
....
if (shiroSession.getAttribute("otherkey") ){
我对此的看法:
<g:if test="${SecurityUtils.subject.session.getAttribute('mykey')}">
所以,我的问题是:
最佳答案
我放弃了在 session 中持久保留对象(直到 cookie 过期)。这是我所做的:
在 Controller 中的登录方法中:
if (! session.currentProfile){
Subject currentUser = SecurityUtils.getSubject()
if (currentUser.isRemembered()){
boolean success = configureSession(session, currentUser.getPrincipal())
if (success){
...
}
}
....
}
第一个“if”检查 session 是否有我需要的对象。
configureSession 方法将我需要的所有信息放入 session 中。
关于grails - 如何在 Grails Web 应用程序中使用 shiro native session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205027/
我是一名优秀的程序员,十分优秀!