如何在 ASP .NET Core 2.1 中将登录页面设为默认路由?

Posted

技术标签:

【中文标题】如何在 ASP .NET Core 2.1 中将登录页面设为默认路由?【英文标题】:How to make Login page as a default route in ASP .NET Core 2.1? 【发布时间】:2019-01-01 12:52:25 【问题描述】:

我是 ASP .NET Core 2.1 的初学者,正在开发使用 ASP .NET Core 2.1 和个人身份验证的项目。我想让我的登录页面作为我的默认路由而不是主页/索引:

            routes.MapRoute(
                name: "default",
                template: "controller=Home/action=Index/id?");

任何帮助我如何将其更改为 ASP .NET Core 2.1,因为登录现在用作剃须刀页面而不是 MVC 操作视图。

【问题讨论】:

好吧,如果您将 [Authorize] 放在主页/索引控制器的顶部,它会在尝试访问主页时重新路由到您的登录页面 @DarthTommy 如果没有家庭控制器怎么办? 您提供的@numbtongue 链接与路由无关。 【参考方案1】:

ConfigureServices 方法中使用它。

services.AddMvc().AddRazorPagesOptions(options=> 
   options.Conventions.AddAreaPageRoute("Identity", "/Account/Login",""); 
).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

然后在配置方法

 app.UseMvc(routes =>
        
            routes.MapRoute(
               name: "default",
               template: "controller=Home/action=Index/id?");

        );

【讨论】:

我已经在我的网站上测试过了,它工作正常。 那么还有比这更多的变化吗? 啊。是的。我的网络应用中没有 index.cshtml 页面。 是的,一旦您删除了 Index.cshtml 文件,它就会像冠军一样工作。在删除之前无法覆盖默认值。【参考方案2】:

我通过在ConfigureServices 函数 (Startup.cs) 中使用此代码来解决此问题

services.AddMvc().AddRazorPagesOptions(options => 
     options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "/Account/Login");
).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

【讨论】:

这对我也有用,除了我想要 website.com/login 或 website.com/logout options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "/Login" ); options.Conventions.AddAreaPageRoute("Identity", "/Account/Logout", "/Logout");【参考方案3】:

这可能会有所帮助,我不需要自己更改默认页面

https://exceptionnotfound.net/setting-a-custom-default-page-in-asp-net-core-razor-pages/

【讨论】:

【参考方案4】:

只需在您的配置中使用它。这会将 AuthorizeAttribute 添加到您的页面

services.AddMvc()
.AddRazorPagesOptions(options =>

    options.Conventions.AuthorizePage("/Home/Index");
);

或者像这样更改默认路由:

services.AddMvc().AddRazorPagesOptions(options =>

    options.Conventions.AddPageRoute("/Employees/Index", "");
);

如有必要,请参阅此页面:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/razor-pages-authorization?view=aspnetcore-2.1

【讨论】:

【参考方案5】:

将此代码插入 Startup.cs 中的 ConfigureServices()


   services.AddMvc().AddRazorPagesOptions(options =>
   
       //Registering 'Page','route-name'
       options.Conventions.AddPageRoute("/Account/Login", "");
   );

记得删除“/Account/Login”操作声明中的任何路由名称

【讨论】:

【参考方案6】:

经过一段时间我解决了它。需要为 AREAS 添加 ALLOW =>

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddRazorPagesOptions(options =>
        
            options.AllowAreas = true; //--working after add this line
            options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "");
        );

【讨论】:

【参考方案7】:

添加授权策略,使应用程序默认要求用户对abc文件夹下的页面进行身份验证,并且不要求abc文件夹下的某些公共页面。

services.AddRazorPages().AddRazorPagesOptions(options =>
          
             options.Conventions.AuthorizePage("/abc");
             options.Conventions.AllowAnonymousToPage("/abc/PublicPage");
           );  

【讨论】:

以上是关于如何在 ASP .NET Core 2.1 中将登录页面设为默认路由?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core 2.1 中将 json 数据列表传递给 HttpPost 控制器

如何在 ASP.NET Core 中将角色添加到 Windows 身份验证

Asp Core MVC 2.1授权基于每个用户的策略?

在 ASP.net Core MVC 2.1 中创建文本文件并下载而不保存在服务器上

如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由