0

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

这是我实施的代码

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

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

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

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

   def user=User.findByUserName(params.username)

也导致了同样的问题

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

任何帮助都将不胜感激......因为我是 Grails 的新手......

4

1 回答 1

1

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

class MyController() {

  SpringSecurityService springSecurityService


  def me() {    
     render model: [user: springSecurityService.currentUser]
  }
}
于 2012-05-01T07:43:33.093 回答