sql >> Databáze >  >> NoSQL >> MongoDB

Jak implementovat ASP.NET Core 3.1 Identity s MongoDB?

Použijte Mongo Identity NuGet balíčky dostupné pro veřejnost jako náhradu za výchozí ASP.NET Core Identity. Několik balíčků, které jsou stále udržovány, jsou AspNetCore.Identity.Mongo a AspNetCore.Identity.MongoDbCore .

  1. Nainstalujte nejnovější balíček v NuGet (viz výše).

  2. Klikněte pravým tlačítkem na svůj projekt v panelu "Solution Explorer"> Přidat> Nová lešená položka...

    Vyberte „Identita“ na levém panelu a dvakrát klikněte na Identita v hlavním panelu výběru

  3. V okně "Přidat identitu" vyberte vše nebo stránku, kterou chcete použít.

    Klikněte na tlačítko „+“ vedle vstupu třídy Data kontextu, přidejte novou (na názvu nezáleží, protože byste jej mohli později smazat) a proveďte totéž pro třídu User (dobře ji pojmenujte, například ApplicationUser, bude to ten, který budete používat při pozdějším vývoji, jeho změna by zabrala nějaký čas a spoustu potíží)

    pro třídu User ji můžete přejmenovat na Namespace, například "[Your Project].Areas.Identity.Datas.ApplicationUser", to se projeví v kódu skafoldu.

3.1. V případě potřeby můžete přidat třídu Role, bylo by lepší vytvořit na stejném jmenném prostoru jako třída User, abyste svůj kód kategorizovali.

  1. Otevřete soubor „IdentityHostingStartup.cs“ ve složce [Your Project]/Areas/Identity, nahraďte kód průvodcem z GitHubu, další informace o nastavení mohou být naleznete zde
// 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. Zaregistrujte službu ověřování na Configure() metoda v Startup.cs složka
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. převést časové razítko UTC na jakékoli jiné časové razítko zóny

  2. Jak nastavit replikaci MySQL Master-Slave na Ubuntu 18.04

  3. Jak zapsat prázdné asociativní pole ({}) do MongoDB z PHP

  4. Operátor MongoDB $