我使用带有Identity(2.0)的MVC(4),我的webapp有一个管理员用来管理用户的页面。
管理员的一个功能是以我实现它的方式激活(冻结)用户帐户:
在我的数据库中添加一个名为“活动”的字段,如果管理员停用该用户,则字段值为“0”。
为了不检查我网站每个页面中的每个用户,只有在用户尝试登录时才这样做,所以在我让他登录之前我会检查这个字段。
但现在我遇到了问题:
用例示例:管理员是用户“x”的停用帐户,10分钟后用户“x”进入网站,网站“记住”他并且不要求他登录,所以我的支票永远不会发生。
如果网站“记住”用户并且没有要求他登录我遇到麻烦,我需要以某种方式签署用户。
我读到了关于cookie和安全标记的内容,我的结论是:
我需要更改用户的安全标记,以防止网站“记住”用户并允许他不要登录。
第一件事:我做对了吗?更改用户的安全标记,网站不记得他?
第二件事:我注意到安全标记是一个guid所以我可以以编程方式生成并插入用户的安全标记字段,是吗?不?为什么?
如果你对整个事情有更好的实施......很高兴听到它:)
谢谢
更新:也许如果我更改数据库中的某个用户字段(我不使用的字段就像电话一样),它会自动更新安全标记吗?
Update2:即使我手动生成GUID并将其放在安全标记字段中(在数据库上),也不会强制用户注销。
答案 0 :(得分:0)
我已经使用javascript来进行注销
<a href="javascript:document.getElementById('logoutForm').submit()"><i class="glyphicon glyphicon-log-out"></i> Log off</a>
答案 1 :(得分:0)
即使用户被浏览器记住,他仍然需要获得授权。您始终可以对授权而不是身份验证执行此检查。这样,即使用户正在浏览网站并且管理员冻结帐户,他的浏览也无法继续,因为在下一次授权时,他将被注销并无法退回英寸
身份验证:这个人是谁,他真的是他自称的人吗?
授权:是否已授权登录人员执行此操作或访问此资源?
正如詹姆斯在评论中所建议的那样,我也同意这可以作为角色或主张来实施。通过Asp.Net身份查看索赔,我确信您会发现解决方案更加优雅和灵活。