MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zaimplementować tożsamość ASP.NET Core 3.1 za pomocą MongoDB?

Użyj pakietów NuGet tożsamości Mongo dostępnych publicznie jako zamiennika domyślnej tożsamości ASP.NET Core. Niewiele pakietów, które są nadal w utrzymaniu to AspNetCore.Identity.Mongo i AspNetCore.Identity.MongoDbCore .

  1. Zainstaluj najnowszy pakiet w NuGet (patrz powyżej).

  2. Kliknij prawym przyciskiem myszy swój projekt w panelu „Eksplorator rozwiązań”> Dodaj> Nowy element szkieletowy...

    Wybierz „Tożsamość” w lewym panelu i kliknij dwukrotnie Tożsamość w głównym panelu wyboru

  3. W oknach „Dodaj tożsamość” wybierz wszystkie lub strony, których chcesz użyć.

    Kliknij przycisk „+” obok wpisu klasy kontekstu danych, dodaj nową (nazwa nie ma znaczenia, ponieważ możesz ją później usunąć) i zrób to samo dla klasy User (nazwij ją dobrze, np. ApplicationUser, będzie to taki, którego będziesz używać w późniejszym rozwoju, zmiana zajmie trochę czasu i dużo kłopotów)

    w przypadku klasy Użytkownik możesz zmienić jej nazwę na Przestrzeń nazw, na przykład „[Twój projekt].Obszary.Identity.Datas.UżytkownikAplikacji”, zostanie to odzwierciedlone w kodzie szkieletu.

3.1. W razie potrzeby możesz dodać klasę Role, lepiej byłoby utworzyć w tej samej przestrzeni nazw, co klasa Użytkownik, aby kategoryzować kod.

  1. Otwórz plik „IdentityHostingStartup.cs” w [Twój projekt]/Areas/Identity, zastąp kod przewodnikiem z GitHub, dodatkowe informacje o ustawieniach mogą być znajdziesz tutaj
// 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. Zarejestruj usługę uwierzytelniania w Configure() metoda w Startup.cs folder
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. Czy za pomocą Mongoose można utworzyć nową bazę danych w MongoDB?

  2. Dokumenty MongoDB wygasają zbyt szybko (mongoose)

  3. Jak wykonać wielokrotną aktualizację tablicy zagnieżdżonej w MondoDB?

  4. Trwałe połączenie lub pula połączeń w PHP54+ Nginx + PHPFPM + MongoDB

  5. Pomóż zdefiniować niesamowite narzędzie MongoDB GUI