3

我们的 SSO 登录过程针对 SQL Server 中的自定义用户存储使用表单身份验证。

我们的新安全要求之一是一次只允许一个帐户有一个活动会话。因此,任何时候用户登录时,我们都会检查登录凭据是否已经处于活动状态,并且最好防止新用户再次登录,直到另一个会话结束。或者,如果这样更容易实施,我们可以强制结束另一个会话。

有没有一种简单的方法可以使用表单身份验证来做到这一点?我们考虑了一种自定义方法,我们跟踪数据库中的每个会话,但这将是很多工作,我们可能必须修改所有应用程序以检测 session_end,我希望避免这种情况。我认为 Forms Auth 中必须有一些东西可以处理这个问题。

我见过 MembershipUser.IsOnline() 方法,这看起来很理想,但我们没有使用 Membership 提供程序。

更新:为了清楚起见,我不需要检查当前用户是否登录,我需要知道其他人是否已经使用同一个帐户登录。

4

3 回答 3

7

试试这个:

System.Web.HttpContext.Current.User.Identity.IsAuthenticated
于 2009-02-05T17:08:02.403 回答
2

如果HttpContext.Current.User属性不为空,则他们已登录。并且Identity.IsAuthenticated为真。

于 2009-02-05T17:07:48.723 回答
2

如果我理解正确,您将需要根据用户 ID 存储最后一个活动状态。
Membership.IsOnline() 是通过检查持久在成员数据库中的LastActivityDate属性来实现的。
所以在某个地方,您需要跟踪用户活动。
您也许可以实现一个 httpmodule 来更新用户活动的时间戳。

于 2009-02-05T17:18:00.887 回答