繁体   English   中英

如何在ASP.NET MVC Web应用程序中将登录页面设置为启动页面?

[英]How to make login page a startup page in ASP.NET MVC web application?

我想创建一个在我启动ASP.NET MVC Web应用程序时打开的登录页面。 我还想在成功登录后自动将用户重定向到Home / Index页面。

此外,登录页面有一个注册按钮,它被重定向到注册页面,我想在注册成功后将注册页面重定向到主页/索引。

您不希望将登录设置为主页。 这不是一个好的设计。 主要是因为用户登录后在浏览器中输入https://yoursite.com ,您不希望再次显示“登录”页面。

相反,您只需要将[授权]应用于家庭控制器。

[Authorize]
public class HomeController : BaseController
{
  // ...
}

全局过滤器

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new AuthorizeAttribute());
    }
}

如果用户访问您的主页,他/她将首先使用QueryString中的 ReturnUrl重定向到Login Page。

例如https://yoursite/Account/Login?ReturnUrl=%2f

确保在web.config中的loginUrl中设置登录页面。

  <system.web>
    ...
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880"/>
    </authentication>
  </system.web>

您有两种选择:1。在登录页面注册默认路由

public static void RegisterRoutes(RouteCollection routes)
    {

        routes.MapRoute(
            "Default", 
            "{controller}/{action}", 
            new { controller = "Home", action = "Login"} 
        );

    }
  1. 使主页/索引需要授权访问,这样您将确保如果登录用户正在访问您的网站,他会直接进入经过身份验证的页面而不是登录

路由是它的最佳选择。您可以通过在配置文件中进行更改来设置默认页面。您会发现有两个配置文件:1.app.config 2.route.config

通过使用Route Config,您也可以重写您的网址: -

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new 
            { 
                controller = "Home", 
                action = "Index", 
                id = UrlParameter.Optional
            }
        );
    }
}

请注意,任何MVC应用程序必须至少具有一个路由定义才能运行。 在上面,名为“Default”的路径模板被添加到routes集合中。 花括号中的项包含路径参数,并由参数名称表示为花括号之间的占位符。 路径段由正斜杠分隔(非常类似于标准URL)。 请注意我们的路由指定的隐含相对URL如何与MVC约定匹配:

~/{controller}/{action}

您也可以通过以下方式更改URL: - routes.MapRoute(名称:“SiteMap”,url:“sitemap”,默认值:new {controller =“Static”,action =“SiteMap”,id = UrlParameter.Optional },namespaces:new string [] {“name.Web.Controllers”});

设置默认页面: - 最好的方法是更改​​路线。 默认路由(在App_Start中定义)设置/ Home / Index

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

作为默认登录页面。 您可以将其更改为您希望的任何路线。

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);

希望你对它有一个清晰的认识

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM