首页 > 解决方案 > 即使对于 [AllowAnonymous] 操作,如何强制在 AuthenticatedUsers 上调用 ValidatePrincipal?

问题描述

我在一个新的 ASP.NET CORE 3.1 项目上使用 cookie 身份验证。

我有一个供来宾和经过身份验证的用户使用的控制器操作。因此,它用AllowAnonymous属性装饰。

如果用户通过了身份验证,则操作的行为会略有不同,因此我使用它httpContext.User.Identity.IsAuthenticated来检查它,如果为真,然后我检索主体的声明以执行数据库更新。

我遇到的问题是,由于操作允许是匿名的,因此OnValidatePrincipal不会调用 cookie 身份验证方案的事件来确保当前声明是最新的。

这意味着即使httpContext.User.Identity.IsAuthenticated标志为真,我也不能依赖它附带的声明,因为在这种情况下它们没有得到验证。

首先,这在我看来是个问题。其次,有谁知道是否有办法解决这个问题?无论动作是否需要授权OnValidatePrincipal,一旦标志为真,有一些方法可以强制调用事件?httpContext.User.Identity.IsAuthenticated

标签: authorizationasp.net-core-3.1cookie-authenticationanonymous-users

解决方案


推荐阅读