Как предотвратить переход пользователя на страницу входа / регистрации и других неаутентифицированных страниц в приложении MVC3? - PullRequest
6 голосов
/ 16 марта 2012

Как только пользователь заходит на мой сайт, где я использую Аутентификацию по форме, как я могу запретить пользователю заходить на страницу входа и регистрации, если у него уже есть вход и регистрация.

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

Два способа "с макушки головы":

1 - Пользовательский Action Filter, который перенаправляет пользователя со страницы, если он вошел в систему.

public class RedirectAuthenticatedRequests : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(filterContext.HttpContext.Request.IsAuthenticated) {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary(new {
                        controller = "SomeController",
                        action = "SomeAction"
                }
            ));
        }

        base.OnActionExecuting(filterContext);
    }
}

2 - Простая проверка в методе действия login, если пользователь вошел в систему.

if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView");
5 голосов
/ 16 марта 2012

Самый простой выход - это проверить в методе контроллера (логин / регистрация), аутентифицирован ли пользователь и перенаправляет ли он пользователя на нужную страницу:

Что-то вроде этого для страницы входа (то же самое с Регистром):

//
// GET: /Login/Index
public ActionResult Index()
{
     if(User.Identity.IsAuthenticated){
          //redirect to some other page
          return RedirectToRoute("Home", "Index"); 
     }

     return View();
}
0 голосов
/ 16 марта 2012

Вы можете проверить свойство User.Identity.IsAuthenticated и перенаправить их соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...