gpt4 book ai didi

grails - 如何在 Grails Web 应用程序中使用 shiro native session ?

转载 作者:行者123 更新时间:2023-12-02 04:50:00 25 4
gpt4 key购买 nike

目前,我在 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 吗?
  • 我是否必须在某些配置中关闭默认的 http session ?

最佳答案

我放弃了在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com