ASP.NET Core 2.1身份:如何删除默认UI剃刀页面?

前端之家收集整理的这篇文章主要介绍了ASP.NET Core 2.1身份:如何删除默认UI剃刀页面?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这个问题中扩展答案:
Change routing in ASP.NET Core Identity UI?

Javier recommends one of the following options when wanting to
customise the URLs:

  • Use the scaffolding element of the Default UI and make all necessary customisations yourself.
  • Use a redirection rule that points the old routes to the new routes.
  • Don’t use the Default UI at all.

从新的ASP.NET Core 2.1 MVC项目,使用身份验证:个人用户帐户设置,您如何不使用默认UI?它似乎默认安装了Identity Core.

创建项目后,删除默认UI剃刀页面方法是什么,仍然使用Identity Core?

我可以删除/ Identity /区域,然后创建自己的AccountController吗?

解决方法

使用 the article linked by Panagiotis Kanavos,我能够找到解决方案.

在ASP.NET Core 2.1.0-preview1中,有一行.AddDefaultUI(),您不必将其包含在Startup.cs中.

services.AddIdentity<IdentityUser,IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultUI()
    .AddDefaultTokenProviders();

然而,在Core 2.1的最终版本中,相同的部分被简化为:

services.AddDefaultIdentity<IdentityUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

解决方案是,如果将AddDefaultIdentity更改回AddIdentity,则可以覆盖默认值. I.E.不包括.AddDefaultUI()(也不包括UI),你可以编写自己的.

services.AddIdentity<IdentityUser,IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
    .AddEntityFrameworkStores<ApplicationDbContext>()
    // .AddDefaultUI()
    .AddDefaultTokenProviders();

然后,我认为删除/ Areas / Identity /文件夹是安全的,但我不是100%

更新:

我清理了我的答案,详细说明了我最终使用的最终解决方案,删除了ASP.NET Core 2.1附带的默认身份UI剃刀页面,并使用MVC代替.

1)在Startup.cs中,

public void ConfigureServices(IServiceCollection services)
    {
        // Unrelated stuff commented out...

        // BEGIN: Identity Setup (Overrides default identity)
        services.AddIdentity<ApplicationUser,IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
        // END: Identity Setup

        services.Configure<IdentityOptions>(options =>
        {
            // Set your identity Settings here (password length,etc.)
        });

        // More unrelated stuff commented out...

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        // Added after AddMvc()
        services.ConfigureApplicationCookie(options =>
        {
            options.LoginPath = $"/account/login";
            options.logoutPath = $"/account/logout";
            options.AccessDeniedPath = $"/account/access-denied";
        });

        // More unrelated stuff commented out...
    }

显然,如果需要,将ApplicationUser和IdentityRole替换为您自己的类.

2)删除ASP.NET Core 2.1项目默认使用的Identity文件夹.

3)创建一个新的单独的ASP.NET Core 2.0项目(不是“2.1”),在项目创建窗口中选择单个用户帐户身份验证.

4)将AccountController和ManageController以及相应的viewmodel和Views从2.0项目复制到ASP.NET Core 2.1项目.

做到这一点,我到目前为止还没有遇到任何问题.

猜你在找的.NET Core相关文章