4
WebAPI 컨트롤러 동작에 [Authorize]
속성을 사용하고 있으며 항상 권한이 다시 돌아옵니다.웹 API 권한 부여 작업이 작동하지 않습니다.
는 여기가 글로벌에 messageHandler의 권한을 설정하고 위치를
다음[Authorize(Roles = "Admin")]
public IQueryable<Country> GetCountries()
{
return db.Countries;
}
은 내 작업입니다. 이것은 테스트 사용자를위한 테스트 용입니다.
public class AuthenticationHandler1 : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
HttpContext.Current.User = TestClaimsPrincipal();
}
return base.SendAsync(request, cancellationToken);
}
private ClaimsPrincipal TestClaimsPrincipal()
{
var identity = new ClaimsIdentity(HttpContext.Current.User.Identity.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, "some.user"));
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
identity.AddClaim(new Claim(ClaimTypes.Role, "Supervisor"));
var testIdentity = new ClaimsIdentity(identity);
var myPrincipal = new ClaimsPrincipal(testIdentity);
return myPrincipal;
}
}
그것은 내가 사용자 정의 인증 속성을 만들어 그것을 작동 메시지
{"Message":"Authorization has been denied for this request."}
처럼 사용하여 권한 부여 특성에 내장 나는 정의를 만들 필요가 없습니다 –