MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да внедрим ASP.NET Core 3.1 идентичност с MongoDB?

Използвайте пакети Mongo Identity NuGet, достъпни публично, като заместител на ASP.NET Core Identity по подразбиране. Няколко пакета, които все още се поддържат, са AspNetCore.Identity.Mongo и AspNetCore.Identity.MongoDbCore .

  1. Инсталирайте най-новия пакет в NuGet (вижте по-горе).

  2. Щракнете с десния бутон върху вашия проект в панела „Изследовател на решения“> Добавяне> Нов скелетен елемент...

    Изберете „Идентичност“ в левия панел и щракнете два пъти върху Идентичност в главния панел за избор

  3. В прозорците „Добавяне на самоличност“ изберете всички или страницата, която искате да използвате.

    Щракнете върху бутона „+“ до въвеждането на клас контекст на данни, добавете нов (името няма значение, тъй като можете да го изтриете след това) и направете същото за потребителския клас (наименувайте го добре, като ApplicationUser, това ще бъде такъв, който ще използвате в по-късна разработка, промяната му ще отнеме известно време и много проблеми)

    за потребителски клас, можете да го преименувате като пространство на имената, като например „[Вашият проект].Areas.Identity.Datas.ApplicationUser“, това ще бъде отразено в кода на скелето.

3.1. Ако е необходимо, можете да добавите ролеви клас, би било по-добре да създадете в същото пространство от имена като потребителския клас, за да категоризирате вашия код.

  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;
});
  1. Регистрирайте услугата за удостоверяване в 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
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PyMongo създава уникален индекс с 2 или повече полета

  2. Нулиране на връзката от Peer pymongo

  3. MongooseJS - Как да запазите документ и препратен документ

  4. Как да конвертирате низ в BSON?

  5. Как да заявите дървовидна структура рекурсивно с MongoDB?