我在一个新的 ASP.NET CORE 3.1 项目上使用 cookie 身份验证。
我有一个供来宾和经过身份验证的用户使用的控制器操作。因此,它用AllowAnonymous
属性装饰。
如果用户通过了身份验证,则操作的行为会略有不同,因此我使用它httpContext.User.Identity.IsAuthenticated
来检查它,如果为真,然后我检索主体的声明以执行数据库更新。
我遇到的问题是,由于操作允许是匿名的,因此OnValidatePrincipal
不会调用 cookie 身份验证方案的事件来确保当前声明是最新的。
这意味着即使httpContext.User.Identity.IsAuthenticated
标志为真,我也不能依赖它附带的声明,因为在这种情况下它们没有得到验证。
首先,这在我看来是个问题。其次,有谁知道是否有办法解决这个问题?无论动作是否需要授权OnValidatePrincipal
,一旦标志为真,有一些方法可以强制调用事件?httpContext.User.Identity.IsAuthenticated