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

问题描述 投票:0回答:9

我是 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 操作视图。

c# asp.net-identity asp.net-mvc-routing razor-pages asp.net-core-2.1
9个回答
17
投票

ConfigureServices 方法中使用它。

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

然后在Configure方法中

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

        });

7
投票

我通过在

ConfigureServices
函数(Startup.cs)中使用此代码解决了这个问题

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

0
投票

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

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


0
投票

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

services.AddMvc()
.AddRazorPagesOptions(options =>
{
    options.Conventions.AuthorizePage("/Home/Index");
});

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

services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/Employees/Index", "");
});

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


0
投票

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

{
   services.AddMvc().AddRazorPagesOptions(options =>
   {
       //Registering 'Page','route-name'
       options.Conventions.AddPageRoute("/Account/Login", "");
   });
}
  • 请记住删除“/Account/Login”操作声明中的任何路由名称

0
投票

过了很长时间我解决了它。需要为 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", "");
        });

0
投票

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

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

0
投票

我的asp net core项目也遇到了同样的问题,该项目由一个API(asp net core web API)和一个客户端(asp net core MVC)组成,当我发布我的项目并尝试托管它时遇到的问题在我的本地主机中,它没有返回我在项目startup.cs文件中配置的登录页面,端点设置我设置的默认页面是“{controller=Account}/{action=Login}/{id?}”但本地主机没有对此做出回应,在网上找到解决方案后,我找到了一些机制来做到这一点,但该解决方案不适合我,所以我自己做了一个技巧,希望许多网络核心开发人员对我的解决方案有所帮助: 所以诀窍是我将端点的先前配置恢复为 “{controller=Home}/{action=Index}”,并通过从屏幕上删除“/{id?}”进行了一些更改,因此实际字符串是“

{控制器=主页}/{操作=索引}/{id?}

”,我已将其更改为“{controller=Home}/{action=Index}”,逻辑是当程序默认启动时,它将执行默认端点设置,因此程序将带我们到“Home”的控制器,并且在返回索引视图之前,操作是“索引”我已经检查了一个值“UserId”,该值必须在登录时创建并将其保存到会话变量中,

var userid = _session.GetString("userid"); if (string.IsNullOrEmpty(userid)) { return RedirectToAction("登录","账户"); }

这就是我解决问题的方法。本地主机和实时发布也运行良好,只需单击浏览器中的视图,它就会根据我的要求返回登录页面。 希望能帮助到你。 谢谢


0
投票
builder.Services.ConfigureApplicationCookie(options =>
{
  // Cookie settings
  options.Cookie.HttpOnly = true;
  options.ExpireTimeSpan = TimeSpan.FromMinutes(5);

  options.LoginPath = "/Identity/Account/Login";
  options.AccessDeniedPath = "/Identity/Account/AccessDenied";
  options.SlidingExpiration = true;
});
© www.soinside.com 2019 - 2024. All rights reserved.