c# - 호출 - Web.API의 사용자 지정 권한 부여




비주얼 스튜디오 api (2)

ASP.NET MVC에 대한 필자의 이해는 승인을 위해서는 다음과 같은 것을 사용해야한다.

public class IPAuthorize : AuthorizeAttribute {

protected override bool AuthorizeCore(HttpContextBase httpContext) {
    //figure out if the ip is authorized 
    //and return true or false
}

그러나 Web API에는 AuthorizeCore(..) 가 없습니다.

OnAuthorization(..) 있으며 MVC에 대한 일반적인 조언은 OnAuthorization(..) 을 사용하지 않는 것입니다.

웹 API의 맞춤 권한 부여에는 무엇을 사용해야합니까?


나는 야당과 전혀 일치하지 않는다.

권한 부여는 인증 필터에서 수행됩니다. 즉, System.Web.Http.AuthorizeAttribute에서 파생되고 IsAuthorized 메서드를 구현해야합니다.

일반 액션 필터는 인증 필터보다 파이프 라인에서 나중에 실행되기 때문에 권한 부여를 구현하지 않습니다.

또한 JWT 구문 분석과 같은 필터에 인증을 구현하지 않습니다. 이는 MessageHandler라는 확장 성 지점에서조차도 완료됩니다.


우리가 사용하는 메서드는 System.Web.Http.AuthorizeAttribute에서 상속되는 사용자 지정 ApiAuthorize 특성입니다. 예 :

public class ApiAuthorizeAttribute : AuthorizeAttribute
{
    readonly CreditPointModelContext _ctx = new CreditPointModelContext();

    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if(Authorize(actionContext))
        {
            return;
        }
        HandleUnauthorizedRequest(actionContext);
    }

    protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var challengeMessage = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
        challengeMessage.Headers.Add("WWW-Authenticate", "Basic");
        throw new HttpResponseException(challengeMessage);

    }

    private bool Authorize(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        try
        {
            //boolean logic to determine if you are authorized.  
            //We check for a valid token in the request header or cookie.


        }
        catch (Exception)
        {
            return false;
        }
    }
}




authorization