2015-01-14 1 views
2

Это может быть очень простой вопрос, но мне сложно понять маршрутизацию MVC.Различные страницы по умолчанию в MVC, если они аутентифицированы

Сценарий: Пользователь вводит мой сайт, введя www.mydomain.com в своем браузере. Я хотел бы перенаправить на разные страницы по умолчанию в зависимости от того, аутентифицирован ли пользователь или нет.

Мой текущий подход к проверке подлинности: в Application_PostAuthenticateRequest Я проверяю файл cookie FormsAuthentication. Если найден, я проанализирую пользователя-пользователя из файла cookie.

Где и как настроить перенаправление?

ответ

4

Я не уверен, что вторая часть вашего вопроса действительно должна означать, однако, основная часть вашего вопроса должна быть довольно простой. Это не имеет никакого отношения к «маршрутизации», просто то, что вы хотите, если кто-то приходит на вашу индексную (корневую) страницу вашего сайта.

Допустим, это ваш контроллер/действие

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult AuthenticatedIndex() 
    { 
     ViewBag.Message = "Your application description page."; 

     return View(); 
    } 

    public ActionResult Contact() 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(); 
    }   
} 

Чтобы проверить, если кто-то проходит проверку подлинности в контроллер/действие, вы можете использовать эту строку кода:

User.Identity.IsAuthenticated 

, который возвращает истину/false в зависимости от того, аутентифицирован ли пользователь. Затем нам нужно отправить пользователя в другое место, если они аутентифицированы. Это делается с помощью следующих действий:

RedirectToAction("actionName", "controllerName"); 

Таким образом, если мы привязываем все это вместе, мы можем обновить наш Index() метод и отправить пользователю в другом месте, если они идентифицируются.

public ActionResult Index() 
{ 
    if(User.Identity.IsAuthenticated){ 
     //send them to the AuthenticatedIndex page instead of the index page 
     return RedirectToAction("AuthenticatedIndex", "Home"); 
    } 
    return View(); 
} 

Единственный нюанс я вижу здесь является то, что зарегистрированный пользователь будет Никогда быть в состоянии добраться до индексного метода, который может быть то, что вы хотите.

+0

Спасибо Tommy за ваше предложение! Я хочу, чтобы страница «Индекс» была доступна для аутентифицированных пользователей. Но после вашей идеи я переименую страницу индекса на что-то еще, а затем пусть метод Index имеет два переадресации в зависимости от проверки IsAuthenticated. Таким образом, определенные URL-адреса всегда будут работать, и по умолчанию будет перенаправлен так, как я хочу. Внешняя идея всегда полезна для вас. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^