我们使用带有OWIN Cookie身份验证的ASP.NET MVC 5来提供基于声明的身份。所有这一切都很好。用户登录,创建身份并作为cookie返回,未来的请求具有自定义验证逻辑,以确保cookie保持有效并根据需要更新身份。
问题是,在尝试通过ClaimsPrincipal.Current
访问身份时,非常间歇性地(每天一次或两次,每隔几天)单个请求将在一定程度上失败。
令人沮丧的是,所有这些失败都在具有授权属性的操作中。因此,所有失败都发生在之后验证了cookie并且OWIN cookie中间件已将标识设置为请求上下文(和线程)。
更令人费解的是,在某些情况下,使用ClaimsPrincipal.Current
获取特定声明的方法将正确执行,然后在请求中稍后另一种方法可能无法找到相同的声明。
我的身份在哪里?