Reputation: 2009
Let's say I'd want to write my own Login, Logout endpoints and their Views
But for some reason I'm struggling hard with removing an existing endpoints
Whenever I remove things that probably are associated with those endpoints, then they recreate themselves and return their default Views.
Basically I'd want to remove as much as possible default endpoints/views of those generated from ASP.NET Core Identity
Any ideas on how can I acheive that?
"Templates/Identity/Pages/Account/Account.AccessDenied.cs.cshtml",
"Templates/Identity/Pages/Account/Account.AccessDenied.cshtml",
"Templates/Identity/Pages/Account/Account.ConfirmEmail.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ConfirmEmail.cshtml",
"Templates/Identity/Pages/Account/Account.ExternalLogin.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ExternalLogin.cshtml",
"Templates/Identity/Pages/Account/Account.ForgotPassword.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ForgotPassword.cshtml",
"Templates/Identity/Pages/Account/Account.ForgotPasswordConfirmation.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ForgotPasswordConfirmation.cshtml",
"Templates/Identity/Pages/Account/Account.Lockout.cs.cshtml",
"Templates/Identity/Pages/Account/Account.Lockout.cshtml",
"Templates/Identity/Pages/Account/Account.Login.cs.cshtml",
"Templates/Identity/Pages/Account/Account.Login.cshtml",
"Templates/Identity/Pages/Account/Account.LoginWith2fa.cs.cshtml",
"Templates/Identity/Pages/Account/Account.LoginWith2fa.cshtml",
"Templates/Identity/Pages/Account/Account.LoginWithRecoveryCode.cs.cshtml",
"Templates/Identity/Pages/Account/Account.LoginWithRecoveryCode.cshtml",
"Templates/Identity/Pages/Account/Account.Logout.cs.cshtml",
"Templates/Identity/Pages/Account/Account.Logout.cshtml",
"Templates/Identity/Pages/Account/Account.Register.cs.cshtml",
"Templates/Identity/Pages/Account/Account.Register.cshtml",
"Templates/Identity/Pages/Account/Account.ResetPassword.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ResetPassword.cshtml",
"Templates/Identity/Pages/Account/Account.ResetPasswordConfirmation.cs.cshtml",
"Templates/Identity/Pages/Account/Account.ResetPasswordConfirmation.cshtml",
"Templates/Identity/Pages/Account/Account._ViewImports.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ChangePassword.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ChangePassword.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.DeletePersonalData.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.DeletePersonalData.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.Disable2fa.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.Disable2fa.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.DownloadPersonalData.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.DownloadPersonalData.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.EnableAuthenticator.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.EnableAuthenticator.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ExternalLogins.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ExternalLogins.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.GenerateRecoveryCodes.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.GenerateRecoveryCodes.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.Index.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.Index.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ManageNavPages.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.PersonalData.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.PersonalData.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ResetAuthenticator.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ResetAuthenticator.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.SetPassword.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.SetPassword.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ShowRecoveryCodes.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.ShowRecoveryCodes.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.TwoFactorAuthentication.cs.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage.TwoFactorAuthentication.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage._Layout.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage._ManageNav.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage._StatusMessage.cshtml",
"Templates/Identity/Pages/Account/Manage/Account.Manage._ViewImports.cshtml",
(...)
Upvotes: 4
Views: 4525
Reputation: 2009
I checked source code on ASPNET's Github and edited it a little bit
public static IdentityBuilder AddDefaultIdentity<TUser>(this IServiceCollection services, Action<IdentityOptions> configureOptions) where TUser : class
{
services.AddAuthentication(o =>
{
o.DefaultScheme = IdentityConstants.ApplicationScheme;
o.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})
.AddIdentityCookies(o => { });
return services.AddIdentityCore<TUser>(o =>
{
o.Stores.MaxLengthForKeys = 128;
configureOptions?.Invoke(o);
})
.AddDefaultUI() // It'll be removed
.AddDefaultTokenProviders();
}
Here's the code:
Extension method:
public static class IServiceCollectionExtensions
{
public static IdentityBuilder AddCustomDefaultIdentity<TUser>(this IServiceCollection services, Action<IdentityOptions> configureOptions) where TUser : class
{
services.AddAuthentication(o =>
{
o.DefaultScheme = IdentityConstants.ApplicationScheme;
o.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})
.AddIdentityCookies(o => { });
return services.AddIdentityCore<TUser>(o =>
{
o.Stores.MaxLengthForKeys = 128;
configureOptions?.Invoke(o);
})
.AddDefaultTokenProviders();
}
}
Startup.cs
services.AddCustomDefaultIdentity<User>
(
o => { /* options e.g */ o.Password.RequireDigit = true;}
)
.AddSignInManager()
.AddEntityFrameworkStores<Context>();
services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = "some_value";
options.Cookie.Name = "some_value";
options.Cookie.HttpOnly = some_value;
options.ExpireTimeSpan = TimeSpan.FromMinutes(some_value);
options.LoginPath = "some_value";
options.LogoutPath = "some_value";
options.ReturnUrlParameter = CookieAuthenticationDefaults.some_value;
options.SlidingExpiration = some_value;
});
Upvotes: 2
Reputation: 239290
You cannot use AddDefaultIdentity
, since internally, this calls AddDefaultUI
, which contains the Razor Pages "endpoints" you don't want. You'll need to use AddIdentity<TUser, TRole>
or AddIdentityCore<TUser>
instead.
Upvotes: 9