사용자 정의 ASP.NET MVC IAuthorizationFilter 클래스를 사용하여 도움/조언이 필요합니다.

StackOverflow https://stackoverflow.com/questions/1414316

문제

나는 내 자신을 만들려고 노력하고있다 IAuthorizationFilter 속성 클래스. 기본적으로 각 API 호출에는 쿼리 문자열 매개 변수가 있습니다. '열쇠'. 나는 간단한 승인 속성으로 이것을 요구하는 모든 행동을 장식하려고했다.

나는 나의 것을 바라고 있었다 OnAuthorization(..) 그런 다음 메소드가 제공된 경우 쿼리 매개 변수의 값을 추출합니다. 그것이 합법적이라면, 사용자는 승인됩니다. 그렇지 않으면, 그들은 그렇지 않습니다.

나는 이것을 어떻게 해야할지 잘 모르겠습니다 OnAuthorization(..) 방법.

아니면 내가 사용해야합니까? IActionFilter 대신에?

편집 : 내가하고있는 일을 보여주기 위해 코드를 추가했습니다 ...

public void OnAuthorization(AuthorizationContext filterContext)
{
    if (filterContext == null)
    {
        throw new ArgumentNullException("filterContext");
    }

    ApiKey apiKey = null;
    string queryStringKey = filterContext.HttpContext.Request.QueryString["key"];
    if (!string.IsNullOrEmpty(queryStringKey))
    {
        apiKey = GetApiKey(queryStringKey); // Custom code that checks a dictionary.
    }

    // Do we have a key?
    if (apiKey == null)
    {
        filterContext.Result = new HttpUnauthorizedResult();
    }

    // TODO: Is this key allowed for this domain?

    // All is good, so don't do anything else.
}
도움이 되었습니까?

해결책

httpcontext.request.querystring 속성을 검사 할 수 있어야합니다.

키 쿼스트 링 값의 값에 따라 액세스를 거부하려면 AuthorizationContext 매개 변수의 결과 속성을 널 값이 아닌 값으로 설정할 수 있습니다. 원한다면 httpunauthorizedresult 클래스의 인스턴스로 설정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top