У меня есть приложение MVC 2, для которого на каждой странице требуется авторизация (кроме в настоящее время для / Account / Logon), но я бы предпочел, чтобы вместо перенаправления в "/ Account / LogOn? ReturnUrl = / SomePage" для аутентификации пользователячто на странице, которую пользователь запросил, вместо этого будет отображаться форма входа в систему, чтобы URL не менялся
У меня уже есть BaseController, который наследует почти каждый другой контроллер, который я использую для других целей, где я ужеПомещение моего AuthorizeAttribute (изменено для краткости):
[Authorize(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
Моя первоначальная мысль для ловкого решения состояла в том, чтобы переопределить класс AuthorizeAttribute таким образом, который бы выглядел примерно так:
public class AuthorizeWithLoginAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//This doesn't work obviously
filterContext.Result = View("Logon");
}
}
Тогда я мог бы просто изменить свой вышеупомянутый контроллер на:
[AuthorizeWithLogin(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
Есть ли способ на самом деле сделать эту работу?(Это мой первый пост к вашему сведению)