C#MVC更改启动页面

时间:2012-09-04 21:43:02

标签: c# asp.net-mvc razor membership-provider

我刚创建了我的第一个C#Razor MVC3项目。我之前已经涉足过,但这是我第一次创建它。

无论如何,我有一个简单的问题。我使用的是使用默认项目构建的MembershipProvider AspNetSqlProfileProvider

我的问题很简单,在加载Home/Index.cshtml之前,我在哪里以及如何检查用户是否已登录,以便我可以将其定向到另一个页面?

如果他们已登录,我想将他们带到客户门户网站。

如果他们没有登录,我想将他们带到登录屏幕。

3 个答案:

答案 0 :(得分:2)

这里有几个选择。你可以在你的家庭/索引视图中做到这一点(如果你正在调用它),然后使用类似的东西:

 if(Request.IsAuthenticated())
    return RedirectToAction("login","login");

或者您可以在应用程序启动方法中执行此操作。不过,我可能只是做第一个。

答案 1 :(得分:2)

设置此方法的更通用方法包括两个步骤:

首先,为您正在保护的操作添加[授权]属性:

[Authorize]
public ActionResult Index() {

}

这将确保用户已经过身份验证(使用FormsAuthentication)。

其次,在您的Web.config文件中,设置您希望用户在需要登录时重定向到的URL。

<authentication mode="Forms">
    <forms name="cookieName" loginUrl="~/Account/LogOn" timeout="30" domain=".example.com" slidingExpiration="true" />
</authentication>

答案 2 :(得分:0)

用户在未登录时重定向到的页面(url)在Web.config下定义:

  <authentication mode="Forms">
      <forms loginUrl="~/Home/GetIn" .... />
    </authentication>

如果已登录,则ASP.NET MVC路由会启动,这位于Global.asax.cs,默认情况下为此路由:

  routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new {
            controller = "Home",
             action = "Index",
             id = UrlParameter.Optional
        } // Parameter defaults

这意味着如果在网址中未指定任何控制器或操作,则默认为HomeIndex