2009-11-03 49 views
0

我有一个CakePHP的经验,现在开始编写ASP.NET MVC框架。 我遇到登录系统问题。如何限制用户在我的系统上同时只记录一次?ASP.NET MVC只允许一个登录用户

我可以在我的数据库中创建一个字段,客户在登录时变为活动状态。如果他注销,我可以使活动为false。但如果会议刚刚结束呢?我怎么能抓住这个?

回答

0

不幸的是,由于会话结束事件的实现方式,这是一个挑战,因为您在启动时无法访问所需的信息。

因此,如果您跟踪他们上次登录的会话,然后在不同会话中从同一经过身份验证的用户处获取请求,请稍微转移问题,然后删除该会话的身份验证(实际上旧会话),并将适当的重定向转发给合适的消息。

这里的关键不仅是跟踪当前登录的人员,还会跟踪该登录的会话ID。

细节有点复杂 - 但您可以在请求级别执行测试,或者添加您自己的基本页类,从中导出所有“真实”页面并检入页面事件。

+0

我可以将sessionID保留在我的数据库中。如果用户注销,它将被删除。但是,如果用户的会话结束,sessionID将停留在那里。 因此,当用户登录时,我必须检查当前的sessionId是否与数据库中的不同,以及会话超时是否已结束,假设我还保留用户的日志记录时间,是否正确? – gong 2009-11-03 12:52:47

+0

嗯,有点。没有一个解决方案。我在看它的方式是,当用户登录时,您不会特别在意会话以前是否处于活动状态,因为该会话现在无效,并且(“旧”会话的)用户需要强制注销。你关心的是当你提出请求时,用户*和*会话的组合是否有效。 – Murph 2009-11-03 13:54:01

3

这个article提供了一个可能的解决方案。

+0

你会得到一个upvote'cos正在做类似于我的建议,并有代码! – Murph 2009-11-03 13:55:10