我正在尝试为 ASP.NET Web API 创建一个自定义身份验证过滤器。下面是我的身份验证过滤器的代码
public class IDPAuthenticationFilter : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
var identity = new ClaimsIdentity();
identity.AddClaim(new Claim(ClaimTypes.Name, "testUser"));
identity.AddClaim(new Claim(ClaimTypes.Role, "client"));
identity.AddClaim(new Claim("testUser"));
identity.AddClaim(new Claim("APP:USERID", "50123"));
var principal = new GenericPrincipal(identity, new string[] { });
Thread.CurrentPrincipal = principal;
HttpContext.Current.User = principal;
base.OnAuthorization(actionContext);
}
}
我已经全局配置了身份验证过滤器,并使用断点确认过滤器被调用。
config.Filters.Add(new IDPAuthenticationFilter());
问题是如果我[System.Web.Http.Authorize]
向任何控制器添加属性,那么我会收到 401 Unauthorized 错误。我可以User.Identity.Name
在控制器操作中访问用户名,但是如果我添加授权属性,我会收到错误消息。有什么我想念的吗。
谢谢你的时间。如果需要任何其他信息,请添加评论。