2015-01-14 55 views
2

這可能是一個非常簡單的問題,但我很難理解MVC路由。如果通過驗證,MVC中的不同默認頁面

場景:用戶通過在瀏覽器中輸入www.mydomain.com進入我的網站。我想重定向到不同的默認頁面,取決於用戶是否被認證。

我目前的身份驗證方法:在Application_PostAuthenticateRequest我檢查FormsAuthentication的cookie。如果發現我從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 

返回true /取決於用戶是否被認證。接下來,如果他們通過身份驗證,我們需要將用戶發送到別處。這是通過以下完成:

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的建議!我確實希望「索引」頁面也可以被認證用戶訪問。但是,按照你的想法,我會將索引頁面重命名爲其他內容,然後根據IsAuthenticated檢查讓Index方法有兩個重定向。這種方式具體的網址將永遠工作,默認會重定向我想要的方式。外部的想法總是有助於讓你去:) –