首页 > 解决方案 > ASP 核心身份声明 - 已过期的声明

问题描述

我正在使用带有声明的开箱即用身份功能开发一个非常标准的会员类型 ASP Core MVC 站点。登录后,我为“FirstName”等创建了各种声明......所以我可以在可能需要该值的各种页面上轻松调用它们。

我想创建一个名为“SubscriptionEndDate”的声明,这样我就可以确定是否有人拥有经过身份验证的登录,但他们的订阅已过期。我允许他们使用过期订阅(例如续订页面)前往各个区域,但他们无法执行网站的主要功能。

这一切都很好,直到我们达到续订日期并且他们的订阅被续订(通过另一个后台进程)。由于我确实允许他们将身份验证 cookie 保存在他们的计算机上以绕过登录,因此有时会发生续订但 SubscriptionEndDate 声明已过期。因此,该网站会给他们一个虚假的错误消息,说明他们的帐户已过期。坏的。

我真的只需要在每次会话开始时检查一次数据库(即当他们打开浏览器并再次访问我的网站时,即使他们已经保存了他们的身份验证 cookie)。我确定这已经解决了 - 有什么建议吗?

谢谢!

标签: asp.net-mvcasp.net-coreasp.net-identityclaims-based-identity

解决方案


您可以使用 ValidatePrincipal 事件执行此操作,链接中提供了详细信息。

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-3.1#react-to-back-end-changes


推荐阅读