相关疑难解决方法(0)

为什么我的ClaimsIdentity IsAuthenticated始终为false(对于web api授权过滤器)?

在Web API项目中,我重写了正常的身份验证过程来检查令牌.代码看起来像这样:

if ( true ) // validate the token or whatever here
{
    var claims = new List<Claim>();
    claims.Add( new Claim( ClaimTypes.Name, "MyUser" ) );
    claims.Add( new Claim( ClaimTypes.NameIdentifier, "MyUserID" ) );
    claims.Add( new Claim( ClaimTypes.Role, "MyRole" ) );

    var claimsIdentity = new ClaimsIdentity( claims );

    var principal = new ClaimsPrincipal( new[] { claimsIdentity } );
    Thread.CurrentPrincipal = principal;
    HttpContext.Current.User = principal;
}
Run Code Online (Sandbox Code Playgroud)

然后,当我将[Authorize]属性应用于控制器时,它无法授权.

调试代码确认相同的行为:

// ALWAYS FALSE!
if ( HttpContext.Current.User.Identity.IsAuthenticated ) {
    // do something
} …
Run Code Online (Sandbox Code Playgroud)

c# asp.net claims-based-identity asp.net-4.5 asp.net-web-api

65
推荐指数
2
解决办法
3万
查看次数