我正在使用OWIN cookie身份验证中间件并设置了一个自定义OnValidateIdentity
- 方法,应该在所有需要进行身份验证的请求上调用该方法。
我的设置如下:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "my-cookie",
Provider = new CookieAuthenticationProvider()
{
OnValidateIdentity = async ctx =>
{
// my own validation code
}
}
}
我遇到的问题是,对于某些请求,不会调用OnValidateIdentity
。如果我多次访问同一个受保护的Web API控制器,某些请求将不会调用OnValidateIdentity
- 方法。
当我需要使用GetOwinContext().Authentication.User
且未填充ClaimsPrincipal
时,这会导致处理后期出现问题。
这可能是什么原因?
答案 0 :(得分:1)
发现了这个问题。 Cookie已过期。
这是因为我还使用OpenIdConnect
- 使用相同cookie的中间件。事实证明,如果您未在该配置中指定UseTokenLifetime = false
,则会将ID令牌的到期时间视为Cookie到期。