2014-03-28 218 views
5

我有一个关于ASP.NET身份提供者的问题。 我制作了一个系统,您可以在用户和角色上执行CRUD操作,但我遇到了问题。如果我要删除已经过身份验证(已登录)的用户,他仍然可以在网站上执行操作,因为他仍然在其本地计算机上保留身份验证和授权cookie。当用户注销时,他不再能够访问该站点。身份是身份验证Cookie

我的问题: 有没有办法让它如此,当一个页面被请求时,它会检查用户是否存在于数据库中?另一种方法可能是不存储“角色”cookie并检查(通过数据库)用户是否具有访问页面所需的角色。我不知道如何配置这个。任何帮助表示赞赏。

+0

你可以编写自己的自定义属性,并用它来装饰类/方法 – Jonesopolis

回答

2

我们特别为这个场景添加了SecurityStampValidator,基本上你可以配置CookieMiddleware来检查用户是否每隔一段时间都仍然有效。

看到这个问题:What is the SecurityStamp

+0

所以,我一直试图通过阅读下面的示例来获得这个工作:'https://aspnet.codeplex.com/SourceControl/最新的#Samples/Identity/Identity-PasswordPolicy/Identity-PasswordPolicy /'在你的文章中,你应该说我应该调用'UserManager.UpdateSecurityStampAsync(userId)'方法来更新用户的安全印章。我在我的Startup类中实现了OnValidateIdentity方法。现在我的问题是:我将不得不以某种方式定制'ApplicationUserManager'类来获得这个工作吗?我想在第三方用户被删除时进行验证检查。 – Andreas

+0

查看http://stackoverflow.com/questions/22682663/how-to-hold-the-cookies-claims-updated-with-mcv5-owin/22796932#22796932 –

1

我相信,如果你在你的web.config中设置cacheRolesInCookie="false"标签<roleManager>标签,你会得到期望的效果。然后,您将能够处理不再存在于数据库中的用户,并根据需要重定向(ex)用户。