如果经过身份验证,则MVC中的默认页面不同

时间:2015-01-14 14:29:23

标签: asp.net-mvc redirect routing forms-authentication

这可能是一个非常简单的问题,但我很难理解MVC路由。

场景:用户通过在浏览器中输入www.mydomain.com进入我的网站。我想重定向到不同的默认页面,具体取决于用户是否经过身份验证。

我当前的身份验证方法:在Application_PostAuthenticateRequest中,我检查FormsAuthentication cookie。如果找到,我从cookie解析用户主体。

我应该在何处以及如何配置重定向?

1 个答案:

答案 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();
}

我在这里看到的唯一警告是,登录用户将从不能够获得索引方法,这可能是您想要的。