如何在 ASP.NET Core 6 MVC 应用程序的欢迎/开始页面上直接显示登录屏幕?

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

我正在开发我的第一个项目,即基于 ASP.NET Core 6 MVC 和默认身份 Razor 页面的应用程序。我正在开发 .NET 6 并使用 EF Core 6。该应用程序是一个客户管理系统,仅供内部使用。

我已经实现了脚手架身份,通过其路径访问时它可以正常工作:

/Identity/Account/Login
但问题是: 如何在欢迎/主页上显示登录表单,保护除登录表单之外的所有其他内容免受未经授权的访问?我的意思是输入:
mydomain.com
的用户应该只看到登录/注册页面。

即:当我将

[Authorize]
属性放在
HomeController
上时,它不会将我重定向到登录页面,我只是收到 http 404 错误。那么这是授权问题、路由问题还是只是 HTML 布局问题?

我翻遍了很多帖子,但找不到答案。也许我误解了这个问题?

问候, 克里斯托

c# asp.net-core-mvc asp.net-core-identity
2个回答
0
投票

您可以像这样设置默认值: 在startup.cs中

app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
               name: "default",
            pattern: "{controller=Account}/{action=Login }/{id?}");


        );

}


0
投票

在启动文件中添加以下代码,这将帮助您将 mydomain.com 导航到登录页面。

 app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages(options =>
    {
        options.Conventions.AddPageRoute("/Identity/Account/Login", "");
    });
});

如果您想保护所有其他内容,您可以在全局级别使用

[Authorize]
属性。

services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

您必须允许用户访问登录或注册页面,在 PageModel 类中添加

[AllowAnonymous]
属性。

关于 404 错误,系统似乎不知道将未经授权的用户重定向到哪里。通过使用以下代码,它将未经授权的用户重定向到登录页面。

services.ConfigureApplicationCookie(options =>
{
    options.LoginPath = "/Identity/Account/Login";
});
© www.soinside.com 2019 - 2024. All rights reserved.