我需要阻止用户从多个会话登录到我的ASP.NET MVC应用程序,并找到this answer如何做到这一点。使用自定义属性保护某些MVC方法以防止多次登录?
现在我想添加一个MVC扭曲:控制器上的一些公共方法是不受保护的,我不在乎谁访问它们,有些受到[Authorize]
属性的保护,以确保只有登录用户可以访问它们。现在我想定制AuthorizeAttribute
,以便所有标记了该属性的方法都将执行相关问题中描述的无多重登录验证,并抛出某种LoggedInElsewhereException
,以便客户端可以了解检查是否失败以及检查失败的原因。
我确定它可以完成,但怎么做?
自动将它们从除最后一个之外的所有会话中注销会不会更容易? 您只需使所有其他会话无效,并且这些会话将只是未经身份验证。 显然,成员资格提供者必须改变以跟踪和做失效,如参考主题中所述。 – Artemiy
@Artemiy - 我不知道你能做到这一点。怎么样? (请发表回复。) –
嘿@Shaul你问了一个非常有趣的问题,但你的问题对我来说不是很清楚....但是它解决了。你试图说,一次用户可以访问你的授权区域。如果有人进入您的授权区域,则其他人将无法进入或访问该区域,直到先前的用户从该区域注销为止。如果我误解了,请纠正我理解你的要求。谢谢 – Thomas