2013-07-22 26 views
0

我正在创建一个Web项目,我必须使用自己的身份验证实现(是的,我完全意识到不推荐这个事实,但我必须这样做......)。现在,我想为身份验证成功的登录用户创建一个新的HttpSession,但是我找不到任何源代码,在没有后端的Spring Security Plugin的情况下完成此任务...创建新的HttpSession为用户?Grails 2.2.3 - 如何创建一个新的HTTP会话?

所以,我想实现的是以下情形

登录页面(用户与会话ID已经是一个会话) - >在用户登录 - >检查登录凭据并创建一个新的会话如果登录成功,新的会话ID - >使用登录用户的新会话。

我希望有人能帮助我,我真的需要它;)

+0

不知道你是否真的想要这个或没有,但你可以在会话中设置userId为:会议[“[ id“] = 并且可以执行检查o在过滤器上的会话,并排除登录控制器,或只是身份验证操作(如果您有这些名称为登录 - >授权操作) –

+0

@SaurabhDixit感谢您的想法,但我认为我不能使用它,因为我创建每个会话都有一个用户对象,并在注销时销毁会话,但我希望能够让用户启动另一个应用程序并使用不同的会话,以便为当时启动的应用程序创建一个新用户......希望这听起来像不是太奇怪,但它基本上是我尝试实现的;) – herom

回答

3

在你的控制器,你不能这样做

// get rid of any existing session 
session().invalidate() 
// create a new session 
request.session(true) 

(我没有检查的语法这.....我通常在Java工作,所以它可能是错误的,但你得到的漂移)

+0

我会试一试 - 谢谢! – herom

+0

它的作品 - 非常感谢!现在只剩下一个问题了:我为每个用户创建一个会话范围服务,但是如果我在注入的'session'对象或'request.session'对象上调用'.invalidate',看起来我的服务也被破坏了...似乎我必须将这些东西从我的服务类中移出到另一个会话范围的bean或类似的东西... – herom

+0

我不认为你应该将注入的会话和request.session想成是不同的事情。上面的代码是破坏一个会话并创建一个新会话。从你对上述@SaurabhDixi的评论的回应中,我认为你可能试图以不应该使用该会话的方式来使用该会话。通常不会为同一用户同时运行两个会话。 – DaveH

相关问题