身份验证 isAuthenticated cookie

5
我有一个关于ASP.NET身份提供程序的问题。 我建立了一个系统,可以在用户和角色上执行CRUD操作,但我遇到了一个问题。如果我删除一个已经通过认证(登录)的用户,他仍然能够在本地计算机上保留身份验证和授权Cookie,并在站点上执行操作。当用户注销后,他将无法再访问该站点。
我的问题是: 是否有一种方法使页面请求时检查用户是否存在于数据库中?另一种方法可能是不存储“角色”Cookie并且通过数据库检查用户是否具有访问页面所需的角色。我不确定如何配置这个。任何帮助都将不胜感激。

你可以编写自己的自定义属性,并用它来装饰类/方法。 - Jonesopolis
3个回答

2
我们为此场景添加了SecurityStampValidator,基本上您可以配置CookieMiddleware以定期检查用户是否仍然有效。
请参见此问题:什么是SecurityStamp

所以,我一直在尝试通过阅读以下示例 'https://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/Identity-PasswordPolicy/Identity-PasswordPolicy/' 来使这个东西工作。在您的帖子中,您说我应该调用 'UserManager.UpdateSecurityStampAsync(userId)' 方法来更新用户的安全戳。我在我的启动类中实现了 OnValidateIdentity 方法。现在我的问题是:我是否需要以某种方式自定义 'ApplicationUserManager' 类才能使其工作?我希望在删除第三方用户时进行此验证检查。 - Andreas
请访问https://dev59.com/b37aa4cB1Zd3GeqPlhIa#22796932。 - Hao Kung

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接