MVC身份 - 如何注销用户?安全邮票?

时间:2014-08-20 16:35:16

标签: asp.net-mvc security asp.net-identity

我使用带有Identity(2.0)的MVC(4),我的webapp有一个管理员用来管理用户的页面。

管理员的一个功能是以我实现它的方式激活(冻结)用户帐户:

在我的数据库中添加一个名为“活动”的字段,如果管理员停用该用户,则字段值为“0”。

为了不检查我网站每个页面中的每个用户,只有在用户尝试登录时才这样做,所以在我让他登录之前我会检查这个字段。

但现在我遇到了问题:

用例示例:管理员是用户“x”的停用帐户,10分钟后用户“x”进入网站,网站“记住”他并且不要求他登录,所以我的支票永远不会发生。

如果网站“记住”用户并且没有要求他登录我遇到麻烦,我需要以某种方式签署用户。

我读到了关于cookie和安全标记的内容,我的结论是:

我需要更改用户的安全标记,以防止网站“记住”用户并允许他不要登录。

第一件事:我做对了吗?更改用户的安全标记,网站不记得他?

第二件事:我注意到安全标记是一个guid所以我可以以编程方式生成并插入用户的安全标记字段,是吗?不?为什么?

如果你对整个事情有更好的实施......很高兴听到它:)

谢谢

更新:也许如果我更改数据库中的某个用户字段(我不使用的字段就像电话一样),它会自动更新安全标记吗?

Update2:即使我手动生成GUID并将其放在安全标记字段中(在数据库上),也不会强制用户注销。

2 个答案:

答案 0 :(得分:0)

我已经使用javascript来进行注销

    <a href="javascript:document.getElementById('logoutForm').submit()"><i class="glyphicon glyphicon-log-out"></i> Log off</a>

答案 1 :(得分:0)

即使用户被浏览器记住,他仍然需要获得授权。您始终可以对授权而不是身份验证执行此检查。这样,即使用户正在浏览网站并且管理员冻结帐户,他的浏览也无法继续,因为在下一次授权时,他将被注销并无法退回英寸

身份验证:这个人是谁,他真的是他自称的人吗?

授权:是否已授权登录人员执行此操作或访问此资源?

正如詹姆斯在评论中所建议的那样,我也同意这可以作为角色或主张来实施。通过Asp.Net身份查看索赔,我确信您会发现解决方案更加优雅和灵活。