У меня есть успокаивающая служба 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