0

我正在使用 OWIN cookie 身份验证中间件,并设置了一个自定义OnValidateIdentity方法,应该在所有需要进行身份验证的请求上调用该方法。

我的设置如下所示:

        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未填充时,这会导致稍后在处理中出现问题。

这可能是什么原因?

4

1 回答 1

1

发现问题。cookie 已过期。

这是因为我还使用了OpenIdConnect使用相同 cookie 的 -middleware。事实证明,如果您未UseTokenLifetime = false在该配置中指定,它将使用 ID 令牌的到期作为 cookie 到期。

于 2017-11-30T15:08:41.627 回答