我正在使用Owin Cookie身份验证中间件,并设置了一个自定义的OnValidateIdentity
-METHOD,该方法应在所有需要认证的请求中调用。
我的设置看起来像这样:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "my-cookie",
Provider = new CookieAuthenticationProvider()
{
OnValidateIdentity = async ctx =>
{
// my own validation code
}
}
}
我遇到的问题是,对于某些请求,OnValidateIdentity
未调用。如果我多次击中同一受保护的Web API控制器,则某些请求不会调用OnValidateIdentity
-Method。
当我需要使用GetOwinContext().Authentication.User
并且ClaimsPrincipal
没有填充时,这将导致处理后期的问题。
这样做的原因是什么?
找到了问题。饼干已过期。
这是因为我还使用同一cookie使用了OpenIdConnect
-Middleware。事实证明,如果您不在该配置中指定UseTokenLifetime = false
,它将使用ID令牌的到期作为cookie Expiry。