繁体   English   中英

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

[英]How to make Login page as a default route in ASP .NET Core 2.1?

我是 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 作为登录现在用作 razor 页面而不是 MVC 操作视图。

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?}");

        });

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

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

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

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

只需在您的配置中使用它。 这会将 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

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

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

过了一段时间我解决了它。 需要为区域添加允许=>

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

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

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

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

{controller=Home}/{action=Index}/{id?}

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

var userid = _session.GetString("userid"); if (string.IsNullOrEmpty(userid)) { return RedirectToAction("Login","Account"); }

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

暂无
暂无

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

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