Ampliando la respuesta en esta pregunta: ¿ Cambiar el enrutamiento en la interfaz de usuario de ASP.NET Core Identity?
Javier recomienda una de las siguientes opciones a la hora de querer personalizar las URLs:
- Utilice el elemento de andamiaje de la interfaz de usuario predeterminada y realice todas las personalizaciones necesarias usted mismo.
- Utilice una regla de redirección que dirija las rutas antiguas a las rutas nuevas.
- No use la interfaz de usuario predeterminada en absoluto.
Desde un nuevo proyecto ASP.NET Core 2.1 MVC, con Autenticación: cuentas de usuario individuales configuradas, ¿cómo NO usa la interfaz de usuario predeterminada? Parece estar instalado de forma predeterminada con Identity Core.
Después de crear el proyecto, ¿cuál es el método para eliminar las páginas de afeitar de la interfaz de usuario predeterminada y seguir usando Identity Core?
¿Puedo simplemente eliminar el área /Identity/ y crear mi propio AccountController en su lugar?
Usando el artículo vinculado por Panagiotis Kanavos , pude llegar a una solución.
Desde ASP.NET Core 2.1.0-preview1, había una línea .AddDefaultUI() , que no tenía que incluir en Startup.cs .
services.AddIdentity<IdentityUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultUI() .AddDefaultTokenProviders();Sin embargo, en la versión de lanzamiento final de Core 2.1, la misma sección se simplificó a:
services.AddDefaultIdentity<IdentityUser>() .AddEntityFrameworkStores<ApplicationDbContext>(); La solución , si cambia AddDefaultIdentity de nuevo a AddIdentity , puede anular los valores predeterminados. IE no incluye .AddDefaultUI() (y tampoco scaffolding la interfaz de usuario) y puede escribir el suyo propio.
services.AddIdentity<IdentityUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityFrameworkStores<ApplicationDbContext>() // .AddDefaultUI() .AddDefaultTokenProviders(); Entonces, creo que es seguro eliminar la carpeta /Areas/Identity/ , pero no estoy al 100%
Actualizar:
Limpié mi respuesta para detallar la solución final con la que terminé eligiendo, para eliminar las páginas de afeitar de la interfaz de usuario de identidad predeterminada que vienen con ASP.NET Core 2.1 y usar MVC en su lugar.
1) En 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... } Y obviamente, reemplace tanto ApplicationUser como IdentityRole con sus propias clases si es necesario.
2) Elimine la carpeta Área para Identidad que viene predeterminada con su proyecto ASP.NET Core 2.1.
3) Cree un nuevo proyecto ASP.NET Core 2.0 separado (no "2.1"), con la autenticación Individual User Account seleccionada en la ventana de creación del proyecto.
4) Copie AccountController y ManageController , con los ViewModels y Views correspondientes, del proyecto 2.0 a su proyecto ASP.NET Core 2.1.
Haciendo lo anterior, no me he encontrado con ningún problema hasta ahora.
Un poco tarde, pero hay una manera mucho más fácil de hacerlo. Puede agregar nuevos andamios para anular todo. Echa un vistazo a este artículo .