代码之家  ›  专栏  ›  技术社区  ›  ErocM

C#MVC更改启动页面

  •  1
  • ErocM  · 技术社区  · 13 年前

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

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

    我的问题很简单,在加载 Home/Index.cshtml 这样我就可以把它们引导到另一个页面?

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

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

    3 回复  |  直到 13 年前
        1
  •  2
  •   Justin Helgerson    13 年前

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

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

    [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
  •  2
  •   Phillip Schmidt    13 年前

    这里有几个选项。你可以在你的主页/索引视图中进行(如果你这么称呼它的话),然后只需使用以下内容:

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

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

        3
  •  0
  •   Ivan Zlatev    13 年前

    如果用户未登录,则重定向到的页面(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
    

    这意味着,如果在URL中没有指定控制器或操作,则它将默认为 Home Index