У меня есть приложение ASP.NET MVC4. Я создал страницу входа. Если пользователь входит в систему, я регистрирую информацию пользователя на сеансе. Я добавил фильтр для проверки переменной сеанса. Если пользователь не входил в систему, я хочу перенаправить пользователя на мой контроллер входа.ASP.NET MVC4 ActionFilters
public class SecurityAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["User"] == null)
{
filterContext.HttpContext.Response.RedirectToRoute("Default", new
{
controller = "Login",
action = "DoLogin",
returnUrl = filterContext.HttpContext.Request.Url.AbsoluteUri
});
}
base.OnActionExecuting(filterContext);
}
}
Я использую этот атрибут на уровне контроллера.
[SecurityAttribute]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Name"] = ((UserEntity)Session["User"]).Name;
ViewData["Surname"] = ((UserEntity)Session["User"]).Surname;
return View();
}
}
метод OnActionExecuting срабатывает перед действием выполнения, но перенаправление после метода встречается, действия в моем родном контроллере. Поскольку переменная session имеет значение null, я получаю ошибку в действии индекса. Как я могу это исправить?