这可能是一个非常简单的问题,但我很难理解MVC路由。
场景:用户通过在浏览器中输入www.mydomain.com进入我的网站。我想重定向到不同的默认页面,具体取决于用户是否经过身份验证。
我当前的身份验证方法:在Application_PostAuthenticateRequest中,我检查FormsAuthentication cookie。如果找到,我从cookie解析用户主体。
我应该在何处以及如何配置重定向?
答案 0 :(得分: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 / 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();
}
我在这里看到的唯一警告是,登录用户将从不能够获得索引方法,这可能是您想要的。