Precisa de alguma ajuda / aconselhamento com um personalizado classe ASP.NET MVC IAuthorizationFilter

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

Pergunta

eu estou tentando fazer minha própria classe atributo IAuthorizationFilter. Basicamente, cada chamada de API tem um parâmetro de string de consulta chamado 'chave' . Eu estava indo em seguida, decorar quaisquer ações que exigem isso, com o atributo de autorização simples.

Eu estava esperando o meu método OnAuthorization(..), então, basta extrair o valor do parâmetro de consulta, se ele foi fornecido. Se era, e é legítimo, em seguida, o usuário está autorizado. caso contrário, eles não são.

Eu não tenho certeza de como fazer isso no método OnAuthorization(..).

Ou eu deveria estar usando um IActionFilter vez?

EDIT: Eu adicionei em algum código para mostrar o que estou fazendo ...

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.
}
Foi útil?

Solução

Você deve ser capaz de inspecionar o imóvel HttpContext.Request.QueryString do parâmetro AuthorizationContext passado para o método OnAuthorization.

Para negar o acesso com base no valor do valor Key querstring, você pode definir a propriedade Resultado do parâmetro AuthorizationContext para um valor não nulo. Isto pode, se quiser, ser definida como uma instância da classe HttpUnauthorizedResult.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top