sql >> Database >  >> NoSQL >> MongoDB

Hoe implementeer je ASP.NET Core 3.1 Identity met MongoDB?

Gebruik Mongo Identity NuGet-pakketten die openbaar beschikbaar zijn als vervanging voor de standaard ASP.NET Core Identity. Enkele pakketten die nog in onderhoud zijn, zijn AspNetCore.Identity.Mongo en AspNetCore.Identity.MongoDbCore .

  1. Installeer het nieuwste pakket in NuGet (zie hierboven).

  2. Klik met de rechtermuisknop op uw project in het "Solution Explorer"-paneel> Toevoegen> Nieuw steigeritem...

    Selecteer "Identiteit" in het linkerpaneel en dubbelklik op Identiteit in het hoofdselectiepaneel

  3. Selecteer in het venster "Identiteit toevoegen" alles of de pagina die u wilt gebruiken.

    Klik op de knop "+" naast de invoer van de gegevenscontextklasse, voeg een nieuwe toe (naam doet er niet toe omdat u deze daarna kunt verwijderen) en doe hetzelfde voor de gebruikersklasse (noem deze goed, zoals ApplicationUser, dit zal de een die u in latere ontwikkeling zult gebruiken, het veranderen ervan zou enige tijd en veel gedoe kosten)

    voor de gebruikersklasse kunt u deze hernoemen als naamruimte, zoals "[Uw project].Areas.Identity.Datas.ApplicationUser", dit wordt weergegeven in de scaffold-code.

3.1. Indien nodig kunt u een Role-klasse toevoegen, het is beter om deze in dezelfde naamruimte te maken als de User-klasse om uw code te categoriseren.

  1. Open bestand "IdentityHostingStartup.cs" in [Your Project]/Areas/Identity, vervang code door de gids van GitHub, aanvullende informatie over instellingen kan hier te vinden
// 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. Registreer authenticatieservice op Configure() methode in Startup.cs map
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. Verbinding maken met MongoDB mislukt bij gebruik van .NET Core op Linux

  2. MongoDB openen vanuit Go

  3. node.js kan module 'mongodb' niet vinden

  4. MongoDB '$or' en regex in PHP