gpt4 book ai didi

c# - 如何使用 MongoDB 实现 ASP.NET Core 3.1 Identity?

转载 作者:行者123 更新时间:2023-12-05 01:11:30 26 4
gpt4 key购买 nike

ASP.NET Core 3.1 Identity是一种 API,用于简化用于管理用户、密码、配置文件数据、角色、声明、 token 、电子邮件确认等的后端和逻辑代码。

对于 Visual Studio,它 support scaffolding提供多个模板页面,但需要依赖 Entity FrameworkDataContext ,目前支持 CosmosDB for Core 3.1,这是唯一的 NoSQL 数据库。

有哪些选项可用于实现 ASP.NET Core Identity 并允许搭建?

最佳答案

使用公开的 Mongo Identity NuGet 包来替代默认的 ASP.NET Core Identity。 AspNetCore.Identity.MongoAspNetCore.Identity.MongoDbCore 是少数仍在维护的软件包。

  1. 在 NuGet 中安装最新的包(见上文)。

  2. 在“解决方案资源管理器”面板中右键单击您的项目 > 添加 > 新建脚手架项目...

    在左侧面板中选择“身份”,然后在主选择面板中双击身份

  3. 在“添加身份”窗口中,选择全部或您要使用的页面。

    点击数据上下文类输入旁边的“+”按钮,添加一个新的(名称无关紧要,你可以删除它),对用户类做同样的事情(命名好,比如ApplicationUser,这个将是您将在以后的开发中使用的那个,更改它需要一些时间和很多麻烦)

    对于 User 类,你可以将其重命名为 Namespace,例如“[Your Project].Areas.Identity.Datas.ApplicationUser”,这将反射(reflect)在脚手架代码上。

3.1。如果需要,您可以添加 Role 类,最好在与 User 类相同的命名空间上创建以对您的代码进行分类。

  1. 在[Your Project]/Areas/Identity中打开文件“IdentityHostingStartup.cs”,将代码替换为GitHub上的指南,附加设置信息可以是found here
// 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 =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
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. Startup.cs文件夹中的Configure()方法注册认证服务
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
}

关于c# - 如何使用 MongoDB 实现 ASP.NET Core 3.1 Identity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63062633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com