asp mvc 3 ActionFilter для базовой аутентификации

У меня есть успокаивающая служба ASP MVC3, использующая базовую аутентификацию. После поиска переполнения стека я создал следующий код.

public class BasicAuthentication : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var req = filterContext.HttpContext.Request;
        if (String.IsNullOrEmpty(req.Headers["Authorization"]))
        {
            filterContext.Result = new HttpNotFoundResult();
        }
        else
        {
            var credentials = System.Text.ASCIIEncoding.ASCII
                        .GetString(Convert.FromBase64String(req.Headers["Authorization"].Substring(6)))
                        .Split(':');
            var user = new { Name = credentials[0], Password = credentials[1] };
            if(!(user.Name == "username" && user.Password == "passwords"))
            {
                filterContext.Result = new HttpNotFoundResult();
            }
        }
    }
}

1) Является ли ActionFilterAttribute лучшим способом сделать это?

2) Является ли установка filterContext.Result правильным способом запретить доступ к методу контроллера?

3) Я что-то делаю неправильно?

Спасибо.

-Nick

5
задан Will Hartung 22 February 2012 в 18:11
поделиться