在脚手架标识后禁用预构建的 Razor UI 页面

new*_*der 3 asp.net-mvc asp.net-core razor-pages

在 VS2022 中,我启动了一个新的 Razor 页面项目,选择“个人帐户”作为身份验证类型。我发现没有可用于自定义的与身份相关的代码,因为它们是使用 Razor UI 预先构建的。我想自定义页面,因此我通过以下建议的方法生成了页面。

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-6.0&tabs=visual-studio&viewFallbackFrom=aspnetcore-2.1

之后,我想在创建管理员帐户后禁用注册页面。我在 Register.chtml 中选择了“从项目中排除”,如下所示。

在此输入图像描述

令人惊讶的是,我发现当生成的页面被排除时,预构建的 Razor UI 页面会自动使用(我仍然可以访问和使用 url /Identity/Account/Register)。如何禁用预构建的 Razor UI 页面?

Ren*_*ena 5

您可以添加app.Map中间件,如下所示:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();

    app.Map("/Identity/Account/Register", HandleRequest);
    app.Map("/Identity/Account/Login", HandleRequest);

    static void HandleRequest(IApplicationBuilder app)
    {
        app.Run(async context =>
        {
            context.Response.StatusCode = StatusCodes.Status404NotFound;
            await context.Response.WriteAsync("404 Not Found");
        });
    }

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapRazorPages();
    });
}
Run Code Online (Sandbox Code Playgroud)