ASP.NET Identity系统旨在取代以前的ASP.NET成员资格和简单成员资格系统。
如何在单个应用程序中具有 Razor 页面和 Web API 的 ASP Net Core 应用程序上实现 AD B2C 身份验证
我正在尝试使用 AD B2C 来保护应用程序,该应用程序具有 Razor 页面和 WebAPI。 razor Pages .cs 文件使用 httpClient 向 webapi 发出请求。我已经查看了样本...
我有一个使用 dotnet 6 的 api 项目。 我使用身份,这是我的用户和角色类: 公共类应用程序用户:身份用户 { 公共虚拟 ICollection 我有一个使用 dotnet 6 的 api 项目。 我使用身份,这是我的用户和角色类: public class ApplicationUser : IdentityUser<int> { public virtual ICollection<IdentityUserRole<int>> Roles { get; } = new List<IdentityUserRole<int>>(); } public class ApplicationRole : IdentityRole<int> { public virtual ICollection<IdentityUserRole<int>> Users { get; } = new List<IdentityUserRole<int>>(); } 由此得出下表: migrationBuilder.CreateTable( name: "AspNetUserRoles", schema: "ancid", columns: table => new { UserId = table.Column<int>(type: "int", nullable: false), RoleId = table.Column<int>(type: "int", nullable: false) }, constraints: table => { //... }); 从这里我可以从 ApplicationUser 导航到 IdentityUserRole<int>。那就是我可以获得RoleId。 如果我想要角色名称,我必须将导航属性添加到 IdentityUserRole<int>。这导致: public class ApplicationUserRole : IdentityUserRole<int> { public virtual ApplicationUser User { get; } public virtual ApplicationRole Role { get; } } public class ApplicationUser : IdentityUser<int> { public virtual ICollection<ApplicationUserRole> Roles { get; } = new List<ApplicationUserRole>(); } public class ApplicationRole : IdentityRole<int> { public virtual ICollection<ApplicationUserRole> Users { get; } = new List<ApplicationUserRole>(); } 但是我得到了以下迁移(当然我在上下文中编辑了 OnModelCreating 方法): protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<string>( name: "Discriminator", schema: "ancid", table: "AspNetUserRoles", type: "nvarchar(max)", nullable: false, defaultValue: ""); } 从这里我想,好吧,IdentityUserRole<int>已经在上下文中映射了,让我们从新的迁移开始:删除迁移目录并从头开始重新应用迁移......: migrationBuilder.CreateTable( name: "AspNetUserRoles", schema: "ancid", columns: table => new { UserId = table.Column<int>(type: "int", nullable: false), RoleId = table.Column<int>(type: "int", nullable: false), Discriminator = table.Column<string>(type: "nvarchar(max)", nullable: false) }, constraints: table => { //... }); 当我的代码中没有使用IdentityUserRole<int>时,我会得到一个鉴别器列。 请注意,AspNetUsers和AspNetRoles表中都没有鉴别器列。 那么我该怎么做才能在没有鉴别器列的情况下获取导航属性? 可能有点晚了,但我也面临这个问题。为了解决这个问题,我们需要做一些事情(我将显示Guid,但你可以将它们全部更改为int): 使用带有所有重载的基类作为上下文: public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid, IdentityUserClaim<Guid>, ApplicationUserRole, IdentityUserLogin<Guid>, IdentityRoleClaim<Guid>, IdentityUserToken<Guid>> 创建ApplicationUserRole类如下: public class ApplicationUserRole : IdentityUserRole<Guid> { public ApplicationUser User { get; set; } public ApplicationRole Role { get; set; } } 使用流畅的 API 配置它(我更喜欢创建单独的类进行配置): using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; class ApplicationUserRoleConfiguration : IEntityTypeConfiguration<ApplicationUserRole> { public void Configure(EntityTypeBuilder<ApplicationUserRole> builder) { builder.HasOne(t => t.User) .WithMany() .HasForeignKey(t => t.UserId); builder.HasOne(t => t.Role) .WithMany() .HasForeignKey(t => t.RoleId); } } 要应用它们,只需覆盖您中的OnModelCreating即可使用ApplicationContext:ApplyConfigurationsFromAssembly 或者直接将配置放到这个方法中。 要向导航属性公开任何其他成员,请使用相同的技术 - 更改基本继承中的类,使用公开的导航属性从原始类继承,使用流畅的 api 为它们配置映射。 在这一点上,创建新的迁移不会以任何方式更改数据库。在 .NET 8 上测试。
我在asp.net core中有一个项目,其身份来自.NET 8。一切都很顺利,我为用户添加了角色(例如管理员、用户),只有当我通过“/login”处的出口点进行身份验证时...
AppUser : IdentityUser 可以链接到员工实体,同时在清洁架构中保持依赖倒置的关注点分离
我选择在基础设施层定义这样的ApplicationUser类: 命名空间 MySolution.Infrastruct.Context { // 通过添加属性来添加应用程序用户的个人资料数据...
我正在开发 ASP.NET Core Web 应用程序 (.NET 5.0)。 这是一个 Intranet 应用程序,因此我使用 Windows 身份验证。 对于授权,我使用 AspNetCore.Identity 中的自定义角色(不想...
无法设置具有 Google 登录 StatusCode 的 ASP.NET Core 8,因为响应已开始
我正在开发一个 ASP.NET Core 8 应用程序,使用 Identity 进行身份验证,包括 Google 登录。成功登录 Google 后,应用程序重定向到 /signin-google,但是...
如何控制从asp.net.identity应用程序访问第三方弱安全网站?
如何控制从 ASP.net Core 网站对第二个网站的访问,这两个网站都运行在同一台 IIS 10 服务器上? 我的团队正在实现“网关”或“包装器”ASP.net core C# ...
如何在 Identity Core 中删除用户的双因素提供商?
我正在尝试使用 Identity core/.net7 实现多个二因素方法。 调用函数 UserManager.GetValidTwoFactorProvidersAsync(user) 会提供用户启用的方法的列表。
ASP.NET Core 8 - 授权重定向到帐户/访问拒绝
我有一个带有以下属性的 Razor 页面: [授权(政策=“员工”)] 以及以下授权配置: options.AddPolicy("员工", 政策 => {
AspNetCore.Identity.Application cookie 在注销后不会被删除
我的应用程序遇到了一个大问题。用户注销后,.AspNetCore.Identity.Application cookie 不会从浏览器的 cookie 存储中删除。 我已经搜索了很多并找到了
我已经使用 facebook 和 google 设置了带有外部登录的脚手架 .Net core 身份。登录工作正常,但是当用户注销,然后想要使用 google 或 facebook 重新登录时,...
如何在类库中使用AddIdentityApiEndpoints?
我已经将我的身份代码分离到一个专用的类库中。我有一个 IServiceCollection 扩展方法,用于添加除这一行之外我需要的所有内容: builder.Services.AddIdentityApiEnd...
我有注销端点,该端点会使用户令牌无效,并且应该在注销用户后执行重定向到登录页面 [HttpGet("注销")] [HttpPost(“注销”)] [Api版本(...
我看到了很多其他线程,但没有人说过是否可以将身份/帐户/登录的端点路由重命名为 /Home 之类的名称。是否可以在没有
GenerateEmailConfirmationTokenAsync 默认过期时间跨度
GenerateEmailConfirmationTokenAsync 的默认过期时间是多少?我应该从ConfirmEmailAsync 中得到什么样的错误? 对于ConfirmEmailAsync,出现无效令牌错误。有没有...
使用.NET 8 Identity Endpoints Cookie 授权另一个应用程序
我正在致力于使用 .NET Identity 平台和新的 Identity API 端点创建身份微服务。我有 3 个独立的应用程序用于测试服务: 一个
将 OIDC 和 OAuth 2.0 概念映射到我的应用程序时出现问题
我正在尝试实现 SSO 服务器,以便我的 ASP.NET Core MVC 应用程序可以: 使用 SSO 服务器对用户进行身份验证 从 SSO 服务器获取用户的角色和声明 每 T 分钟我就...
多个“localhost”Asp.Net Core 站点上基于 Cookie 的身份验证
场景只是开发机器上的问题。 我有多个不同且完全独立的 ASP.NET Core 2.2 项目在我的开发计算机上的“localhost”下运行。 一旦我成功了
Asp.net core Identity 中如何管理来自不同设备的用户登录? (基于令牌的身份验证)
用户需要在多个设备上登录。每次登录都会使用自己的令牌和刷新令牌创建一个会话。令牌存储在数据库中,然后验证 api 收到的每个令牌
ASP.NET UserManager.FindByEmailAsync 返回 null,即使用户存在于数据库中
所以标题是不言自明的 您可以在下面找到登录端点和用户存储库的代码 我尝试注册多个用户并使用他们登录,但 FindByEmail 返回 null ......