我不確定你問題的第二部分究竟是什麼意思,但是,你問題的主要部分應該是非常簡單的。這與「路由」無關,只要有人訪問您的網站的索引(根)頁面就會發生什麼。
比方說,這是你的控制器/動作
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();
}
我看到這裏唯一需要注意的是,在用戶登錄將決不能夠得到的指數方法,這可能是你想要的。
謝謝Tommy的建議!我確實希望「索引」頁面也可以被認證用戶訪問。但是,按照你的想法,我會將索引頁面重命名爲其他內容,然後根據IsAuthenticated檢查讓Index方法有兩個重定向。這種方式具體的網址將永遠工作,默認會重定向我想要的方式。外部的想法總是有助於讓你去:) –