我使用MVC(4)和标识(2.0),我的for应用程序有一个管理页面来管理用户。
管理员的一项功能是以我实现它的方式停止(冻结)用户帐户:
在我的DB中添加一个名为'Active‘的字段,如果管理员停用用户,字段值为'0’。
为了不检查我网站的每一页中的每个用户,只有当用户试图登录时才会这样做,所以在我让他登录之前,我要检查这个字段。
,但现在我遇到了问题:
用例示例:管理员停用用户"x“的帐户,10分钟后,用户"x”进入站点,站点“记住”他,而不是要求他登录,这样我的检查永远不会发生。
如果网站是“记住”的用户,而不是要求他登录-我有麻烦,我需要以某种方式签署用户。
我读过关于cookie和安全邮票的文章,我的结论是:
我需要更改用户的安全印章,以防止网站“记住”用户,并允许他不登录。
第一件事:,我明白了吗?更改用户的安全印章,网站就不会记得他了?
第二件事:我注意到安全邮票是guid,所以我可以通过编程方式生成并插入到用户的安全邮票字段,是吗?没有吗?为什么?
如果您对整个thing...ill有一个更好的实现,那么很高兴地听到它:)
谢谢
更新:,如果我更改数据库中用户的某个字段(一个我不像电话一样使用的字段),它会自动更新安全印章吗?
Update2:,即使我手动生成GUID并将其放入安全标记字段(在DB上),也不会强迫用户注销。
发布于 2014-08-20 19:03:24
我使用了javascript来实现注销
<a href="javascript:document.getElementById('logoutForm').submit()"><i class="glyphicon glyphicon-log-out"></i> Log off</a>发布于 2015-03-09 08:40:30
即使浏览器记住了用户,他仍然需要被授权。您可以始终在授权而不是身份验证时执行此检查。这样,即使用户正在浏览站点,管理员冻结了帐户,他的浏览也将无法继续,因为在下一次授权时,他将被注销,无法重新登录。
Authentication:这个人是谁,他到底是什么人?
Authorization:是否已被授权执行此操作或访问此资源?
正如James在评论中所建议的那样,我也同意这可以作为一种角色或一种主张来实施。研究使用Asp.Net标识的声明,我相信您会发现这个解决方案更加优雅和灵活。
https://stackoverflow.com/questions/25410013
复制相似问题