sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでASP.NETCore3.1 Identityを実装する方法は?

    デフォルトのASP.NETCoreIdentityの代わりに、一般に公開されているMongoIdentityNuGetパッケージを使用します。まだ維持されているパッケージの中には、AspNetCore.Identity.Mongo はほとんどありません。 および AspNetCore.Identity.MongoDbCore 。

    1. NuGetに最新のパッケージをインストールします(上記を参照)。

    2. [ソリューションエクスプローラー]パネルでプロジェクトを右クリック>[追加]>[新しい足場アイテム...]

      左側のパネルで[ID]を選択し、メインの選択パネルで[ID]をダブルクリックします

    3. [IDの追加]ウィンドウで、使用するすべてまたはページを選択します。

      データコンテキストクラス入力の横にある[+]ボタンをクリックし、新しいものを追加し(後で削除できるため、名前は関係ありません)、Userクラスにも同じことを行います(ApplicationUserなどの名前を付けます。これは後の開発で使用するもので、変更するには時間がかかり、面倒です)

      Userクラスの場合、「[Your Project] .Areas.Identity.Datas.ApplicationUser」のように名前空間に名前を変更できます。これは、スキャフォールドコードに反映されます。

    3.1。必要に応じて、Roleクラスを追加できます。コードを分類するには、Userクラスと同じ名前空間に作成することをお勧めします。

    1. [Your Project] / Areas / Identityでファイル「IdentityHostingStartup.cs」を開き、コードを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. MongooseスキーマでMongoDBGeoJSONフィールドをどのように表現しますか?

    2. JSONをFlaskに投稿すると、400BadRequestエラーが発生します

    3. node.jsの既存のjsonオブジェクトに新しい属性を追加します

    4. PymongoforEachフォーマット