Я ожидал, что он вернет 'true' или 'false' ...
Я переопределил OnAuthorization в моем контроллере и на основании отсутствующего или недействительного значения заголовка HTTP, которое я хочу вернуть 403 запрещено,однако я не могу понять, как вернуть что-либо из OnAuthorization, чтобы он фактически остановил работу остальной части контроллера.
Что мне делать?
Моя первая попытка нижебыл огромный сбой, я думаю, что Deny () работает, но ничего не происходит ...
public class AuthController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
if (string.IsNullOrEmpty(filterContext.HttpContext.Request.Headers["Authorization"]))
Deny();
string authString = filterContext.HttpContext.Request.Headers["Authorization"];
base.OnAuthorization(filterContext);
}
private ActionResult Deny()
{
HttpContext.Response.StatusCode = 403;
return Content("Access Denied", "text/plain");
}
}
ОБНОВЛЕНИЕ похоже, что это добилось цели, любая причина, почему это может быть плохим подходом?
if (string.IsNullOrEmpty(filterContext.HttpContext.Request.Headers["Authorization"]))
{
filterContext.Result = Content("Access Denied", "text/plain");
filterContext.HttpContext.Response.StatusCode = 403;
base.OnAuthorization(filterContext);
}
ВНОВЬ ОБНОВЛЕНО хорошо, так что теперь это вообще не работает ... Я установил точку останова и наблюдал, как она входит в оператор if и попадает в базу. OnAuthorization(...) вызовите и снова вернитесь назад ... зачем ему переходить в оператор if, если он не выполняется?Если это выполнялось, почему бы вызывать base.OnAuthorization (...) не заканчивать вещи рано?