Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MongoDB实现ASP.NET Core 3.1身份?_C#_Mongodb_Asp.net Identity_Asp.net Core 3.1 - Fatal编程技术网

C# 如何使用MongoDB实现ASP.NET Core 3.1身份?

C# 如何使用MongoDB实现ASP.NET Core 3.1身份?,c#,mongodb,asp.net-identity,asp.net-core-3.1,C#,Mongodb,Asp.net Identity,Asp.net Core 3.1,是一个API,用于简化后端和逻辑代码,以管理用户、密码、配置文件数据、角色、声明、令牌、电子邮件确认等 对于VisualStudio,它需要提供多个模板页面,但需要依赖的DataContext,后者目前支持CosmosDB For Core 3.1,这是唯一的NoSQL数据库 有哪些选项可用于实现ASP.NET核心标识并允许搭建?使用公开的Mongo Identity NuGet软件包替换默认的ASP.NET核心标识。少数仍在维护中的软件包是和 在NuGet中安装最新的软件包(请参见上文) 右

是一个API,用于简化后端和逻辑代码,以管理用户、密码、配置文件数据、角色、声明、令牌、电子邮件确认等

对于VisualStudio,它需要提供多个模板页面,但需要依赖的
DataContext
,后者目前支持CosmosDB For Core 3.1,这是唯一的NoSQL数据库


有哪些选项可用于实现ASP.NET核心标识并允许搭建?

使用公开的Mongo Identity NuGet软件包替换默认的ASP.NET核心标识。少数仍在维护中的软件包是和

  • 在NuGet中安装最新的软件包(请参见上文)

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

    在左侧面板上选择“Identity”,然后双击主选择面板中的Identity

  • 在“添加标识”窗口中,选择全部或要使用的页面

    除了数据上下文类输入外,单击“+”按钮,添加一个新的(名称并不重要,因为您可以在以后删除它),并对用户类执行相同的操作(命名好,例如ApplicationUser,这将是您在以后的开发中使用的一个,更改它将花费一些时间和很多麻烦)

    对于用户类,您可以将其重命名为命名空间,例如“[Your Project].Areas.Identity.Datas.ApplicationUser”,这将反映在脚手架代码中

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

  • 在[Your Project]/Areas/Identity中打开文件“IdentityHostingStartup.cs”,将代码替换为GitHub的指南,可以查看其他设置信息

  • 使用公开的Mongo Identity NuGet软件包替换默认的ASP.NET核心标识。少数仍在维护中的软件包是和

  • 在NuGet中安装最新的软件包(请参见上文)

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

    在左侧面板上选择“Identity”,然后双击主选择面板中的Identity

  • 在“添加标识”窗口中,选择全部或要使用的页面

    除了数据上下文类输入外,单击“+”按钮,添加一个新的(名称并不重要,因为您可以在以后删除它),并对用户类执行相同的操作(命名好,例如ApplicationUser,这将是您在以后的开发中使用的一个,更改它将花费一些时间和很多麻烦)

    对于用户类,您可以将其重命名为命名空间,例如“[Your Project].Areas.Identity.Datas.ApplicationUser”,这将反映在脚手架代码中

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

  • 在[Your Project]/Areas/Identity中打开文件“IdentityHostingStartup.cs”,将代码替换为GitHub的指南,可以查看其他设置信息

  • 嗨,我正试着做隔离,但我在构建时遇到了一个错误,上面写着“'TestIdentityMongo.Areas.Identity.Data.TestIdentityMongoUser'不能用作泛型类型或方法'IdentityDbContext'中的类型参数'TUser'。没有从“TestIdentityMongo.Areas.Identity.Data.TestIdentityMongoUser”到“Microsoft.AspNetCore.Identity.Identity.IdentityUser”的隐式引用转换。“我不知道我是不是在做坏事。看起来MongoUser类现在已经过时了。Hello@ste.xin,我不确定,但您可以尝试其他选择,例如,我将编辑此答案以反映我发现的更好方法。我正在尝试使用mongoDB和Identity设置Blazor服务器应用程序。但是当我粘贴“IdentityHostingStartup.cs”文件的代码时,我总是会得到错误:“iservicecollection不包含“addidentitymongodbprovider”的定义。我做错了什么?嗨,我正试图按seggested做,但我在构建时遇到一个错误,它说”“TestIdentityMongo.Areas.Identity.Data.TestIdentityMongoUser”不能用作泛型类型或方法“IdentityDbContext”中的类型参数“TUser”。没有从“TestIdentityMongo.Areas.Identity.Data.TestIdentityMongoUser”到“Microsoft.AspNetCore.Identity.Identity.IdentityUser”的隐式引用转换。“我不知道我是不是在做坏事。看起来MongoUser类现在已经过时了。Hello@ste.xin,我不确定,但您可以尝试其他选择,例如,我将编辑此答案以反映我发现的更好方法。我正在尝试使用mongoDB和Identity设置Blazor服务器应用程序。但是当我粘贴“IdentityHostingStartup.cs”文件的代码时,我总是会得到一个错误:“iservicecollection不包含“addidentitymongodbprovider”的定义。我做错了什么?
    // 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;
    });
    
    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
    }