如何为登录GRAILS(Spring security)的用户实现会话?

Posted

技术标签:

【中文标题】如何为登录GRAILS(Spring security)的用户实现会话?【英文标题】:How to implement session for the user logged in GRAILS( Spring security)? 【发布时间】:2012-05-10 18:45:57 【问题描述】:

如何为登录的用户实现会话

这是我实现的代码

 def user=User.findByUserId(params.userId)
    if(user)
      
    def sessionUser=user
    def sessionId=sessionUser.id                       
    constSessionUser=sessionUser
    constSessionId=sessionId
  ..........
   

但是如果我使用不同的用户名和密码登录,返回的 params.userId 仍然是以前的用户,即使我已经用 session.invalidate() 终止了它

因为我使用 Springsecurity 我只是传递用户名和密码,但创建的会话仍然是以前的用户或当前已注册的任何其他用户!

1)我如何为使用 Spring Security 以来登录的用户创建会话

   def user=User.findByUserName(params.username)

也导致了同样的问题

2)我如何终止会话,即使不同的用户已登录,同一会话也不在进行中

任何帮助都将不胜感激 plz...作为 Grails 的新手...

【问题讨论】:

能否将您的问题更新为更易读的格式?我的意思是将大写文本更改为正常。 【参考方案1】:

如果您使用 Spring Security 插件,则无需使用会话或手动跟踪用户。当您需要时,您可以通过SpringSecurityService (see docs) 访问用户详细信息,例如:

class MyController() 

  SpringSecurityService springSecurityService


  def me()     
     render model: [user: springSecurityService.currentUser]
  

【讨论】:

以上是关于如何为登录GRAILS(Spring security)的用户实现会话?的主要内容,如果未能解决你的问题,请参考以下文章

Grails Spring Core 安全插件 - 无法解析类

Grails spring-security-core 插件安装永远不会完成

如何为 grails 插件配置日志记录?

如何为 mongodb 副本集配置 grails 3

如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor?

如何为 Spring Security 启用日志记录?