2012-08-03 62 views
3

登录用户时,设计似乎无法使先前的会话无效。如果我以UserA身份登录,返回到登录屏幕并以UserB身份重新登录,设计不会销毁前一个会话并创建一个新会话,但会持续UserA会话。我想知道如何在用户登录时调用Session#destroy。我知道我可以重新实现Session#create方法,但是据我所知,这将涉及到生成所有控制器视图。我想知道是否有更干净的方法来做到这一点。在登录时破坏设计用户会话

回答

0

我不确定我是否理解你要做什么,但是如果你在UserB登录时试图使UserA会话无效,那么当他们从不同的地方登录时可能会遇到问题。

0

这是一个极端的情况。 UserA登录,然后他登录为UserB,而不登出不会经常发生。如果您真的担心,您可以重定向到网站的主页,并显示“已登录”。或类似的东西。

+0

我不认为这是一个“极端边缘案例”,而是一个应用程序设计问题,我已经看到了很多次。包含登录表单的面向公众的页面就是一个很好的例子,因为可能没有任何特定于登录用户的功能,因此没有提示表明用户已经登录。您可以争辩说用户“应该“首先注销,但开发人员无法直接控制用户行为。在我看来,某人首先输入登录信息的事实应该是对现有会话的隐式“登出”。 – 2015-10-17 23:15:11