Използвайте пакети Mongo Identity NuGet, достъпни публично, като заместител на ASP.NET Core Identity по подразбиране. Няколко пакета, които все още се поддържат, са AspNetCore.Identity.Mongo и AspNetCore.Identity.MongoDbCore .
-
Инсталирайте най-новия пакет в NuGet (вижте по-горе).
-
Щракнете с десния бутон върху вашия проект в панела „Изследовател на решения“> Добавяне> Нов скелетен елемент...
Изберете „Идентичност“ в левия панел и щракнете два пъти върху Идентичност в главния панел за избор
-
В прозорците „Добавяне на самоличност“ изберете всички или страницата, която искате да използвате.
Щракнете върху бутона „+“ до въвеждането на клас контекст на данни, добавете нов (името няма значение, тъй като можете да го изтриете след това) и направете същото за потребителския клас (наименувайте го добре, като ApplicationUser, това ще бъде такъв, който ще използвате в по-късна разработка, промяната му ще отнеме известно време и много проблеми)
за потребителски клас, можете да го преименувате като пространство на имената, като например „[Вашият проект].Areas.Identity.Datas.ApplicationUser“, това ще бъде отразено в кода на скелето.
3.1. Ако е необходимо, можете да добавите ролеви клас, би било по-добре да създадете в същото пространство от имена като потребителския клас, за да категоризирате вашия код.
- Отворете файла „IdentityHostingStartup.cs“ във [Вашият проект]/Areas/Identity, заменете кода с ръководството от GitHub, допълнителна информация за настройките може да бъде намира се тук
// Add Identity for AspNetCore.Identity.Mongo, ApplicationRole is optional
services.AddIdentityMongoDbProvider<ApplicationUser, ApplicationRole>(identityOptions =>
{
// Password settings.
identityOptions.Password.RequiredLength = 6;
identityOptions.Password.RequireLowercase = true;
identityOptions.Password.RequireUppercase = true;
identityOptions.Password.RequireNonAlphanumeric = false;
identityOptions.Password.RequireDigit = true;
// Lockout settings.
identityOptions.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
identityOptions.Lockout.MaxFailedAccessAttempts = 5;
identityOptions.Lockout.AllowedForNewUsers = true;
// User settings.
identityOptions.User.AllowedUserNameCharacters =
"ab[email protected]+";
identityOptions.User.RequireUniqueEmail = true;
}, mongoIdentityOptions => {
mongoIdentityOptions.ConnectionString = "mongodb://localhost:27017/MyDB";
// mongoIdentityOptions.UsersCollection = "Custom User Collection Name, Default User";
// mongoIdentityOptions.RolesCollection = "Custom Role Collection Name, Default Role";
}).AddDefaultUI(); //.AddDefaultUI() to temporary remove error when no EmailSender provided, see https://stackoverflow.com/questions/52089864/
// This is required to ensure server can identify user after login
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.SlidingExpiration = true;
});
- Регистрирайте услугата за удостоверяване в
Configure()
метод вStartup.cs
папка
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// code here...
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
// add app.UseAuthentication(); to register authentication service, without it, user could technically login but has no logged in session created.
app.UseAuthentication();
app.UseAuthorization();
// more code
}