Я использовал следующий код для перенаправления пользователей, если они не аутентифицированы. Это делается путем переопределения метода «OnActionExecuting» для изменения контроллера и действия, если они не аутентифицированы. В этом примере показано перенаправление на страницу входа mvc по умолчанию /Account/LogOn.
.
public class RequiresAuthenticationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//You can put your check here. This particular
//check is for default asp.net membership authentication
if(!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
RedirectToLogin(filterContext);
}
}
private void RedirectToLogin(ActionExecutingContext filterContext)
{
var redirectTarget = new RouteValueDictionary
{
{"action", "LogOn"},
{"controller", "Account"}
};
filterContext.Result = new RedirectToRouteResult(redirectTarget);
}
}
Редактировать: Очевидно, поместите этот атрибут в верхнюю часть ваших классов контроллеров, но вы знали, что ...:)
[RequiresAuthentication]
public class HomeController : Controller
{
// code...
}