デフォルトのASP.NETCoreIdentityの代わりに、一般に公開されているMongoIdentityNuGetパッケージを使用します。まだ維持されているパッケージの中には、AspNetCore.Identity.Mongo
はほとんどありません。 および
-
NuGetに最新のパッケージをインストールします(上記を参照)。
-
[ソリューションエクスプローラー]パネルでプロジェクトを右クリック>[追加]>[新しい足場アイテム...]
左側のパネルで[ID]を選択し、メインの選択パネルで[ID]をダブルクリックします
-
[IDの追加]ウィンドウで、使用するすべてまたはページを選択します。
データコンテキストクラス入力の横にある[+]ボタンをクリックし、新しいものを追加し(後で削除できるため、名前は関係ありません)、Userクラスにも同じことを行います(ApplicationUserなどの名前を付けます。これは後の開発で使用するもので、変更するには時間がかかり、面倒です)
Userクラスの場合、「[Your Project] .Areas.Identity.Datas.ApplicationUser」のように名前空間に名前を変更できます。これは、スキャフォールドコードに反映されます。
3.1。必要に応じて、Roleクラスを追加できます。コードを分類するには、Userクラスと同じ名前空間に作成することをお勧めします。
- [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;
});
-
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
}