标签: asp.net-identity

使用SQL创建ASP.NET Identity用户

在我们的ASP.NET MVC Core应用程序中,我们使用ASP.NET Idenity来实现用户管理。

问题:如何使用ASP.NET用户界面,而不是直接使用SQL语句等在SQL数据库中创建用户?直接在ASPNETUsers表中创建用户会引起任何问题吗?注意:我们需要ASPNETUsers从用户列表中填充内置身份表。密码可以是任何东西,不需要任何特定角色。

sql-server asp.net-identity asp.net-core asp.net-core-identity

1
推荐指数
1
解决办法
1802
查看次数

从角色授权更改为声明授权

我有一个使用ASP.NET Membership构建的webforms应用程序.我成功迁移到了身份.

我现在想要使用声明授权而不是Roles授权,但旧用户的角色信息已迁移到AspNetUserRoles数据库中的表,但该AspNetUserClaims表为空.迁移后注册的新用户,我可以AspNetUserClaims使用以下代码添加:

IdentityResult result1 = manager.AddClaim(user.Id, new Claim(ClaimTypes.Role, "role"));
Run Code Online (Sandbox Code Playgroud)

但旧用户只在AspNetUserRoles表中注册而不在AspNetUserClaims表中.

  1. 在登录时,创建的声明是否也包括AspNetUserRoles表格中的角色信息,还是仅包括表格中的角色信息AspNetUserClaims

  2. 请问User.IsInRole()同时检查AspNetUserRoles表和AspNetUserClaims表?

  3. 如何将信息从AspNetUserRoles表格迁移到AspNetUserClaims表格?

c# authorization roles claims asp.net-identity

1
推荐指数
1
解决办法
1839
查看次数

在ASP.NET Identity中向AspNetUserClaims添加列

Microsoft.AspNet.Identity.Core 2.2.1在解决方案中使用。我需要将此与另一个应自动添加声明的系统集成。

为了跟踪哪些索偿是手动添加的,哪些索偿是由外部系统创建的,我想在AspNetUserClaims表格中添加另一列:

ExternalSystem varchar(64) null
Run Code Online (Sandbox Code Playgroud)

鉴于我的解决方案中实际上没有Claims类,我该如何使用EF迁移(或在没有必要时不使用)进行此操作?

c# asp.net entity-framework asp.net-identity

1
推荐指数
1
解决办法
1505
查看次数

如何使用PasswordHasher的VerifyHashedPassword方法?

我试图弄清楚如何使用VerifyHashedPassword方法,这是我到目前为止所得到的.我怎么知道密码是否已经过验证?

public bool VerifyPassword(string pass)
    {
        PasswordHasher passwordHasher = new PasswordHasher();

        HDA = new HWCDA();

        HWCE = new HWCEntities();

        string userPass = HWCE.AspNetUsers.Where(w => w.UserID == 1).Select(s => s.PasswordHash).FirstOrDefault().ToString();

        bool result = false;

        passwordHasher.VerifyHashedPassword(userPass, pass);

        return false;            
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-identity

1
推荐指数
1
解决办法
2131
查看次数

如何使用身份和.net core 2创建两种类型的用户

我开始开发具有.net core 2和Web服务的Web应用程序。

当用户在站点上注册时,他可以选择自己是公司还是简单用户,因此我将数据存储在特定表中,但登录数据存储在AspNetUsers中。

如何使用.net Core中的Identity处理它?

asp.net-identity asp.net-core-webapi asp.net-core-2.0

1
推荐指数
1
解决办法
1486
查看次数

Mvc核心在ExternalLoginSignInAsync之后获取UserId

我通过以下方式通过第三方(例如Google)登录用户:

var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false);
Run Code Online (Sandbox Code Playgroud)

上面的内容由于存在而应该成功,如何捕获登录用户的userId?userId是位于我的数据库中Users表上的userId,它不会来自第三方登录提供程序。

这可能吗?我现在似乎找不到任何可以让我检索它的函数或对象。我以为可能是从User Object中获取的,但是据我的理解,它来自HttpContext,在此时,该用户将不会具有已登录的用户身份,至少直到刷新页面后才如此。我也想避免仅出于此目的重定向到另一个页面。

注意:我正在使用Dapper,并且在我的项目中没有EF的痕迹。不知道这有多重要。

c# asp.net-mvc dapper asp.net-identity asp.net-core-mvc

1
推荐指数
1
解决办法
407
查看次数

ASP.NET核心标识中的角色声明的JWT身份验证

我如何通过声明对用户进行身份验证,其中包含用户角色?

Startup.cs:

services.AddAuthorization(options => {
                options.AddPolicy("CanEdit", policy => policy.RequireClaim("CanEdit"));    
});
Run Code Online (Sandbox Code Playgroud)

在登录控制器中我有:

    private async ValueTask<JwtSecurityToken> GetJwtSecurityToken(ApplicationUser user){
        //var totalClaims = new List<Claim>();
        //var userRoles = await _userManager.GetRolesAsync(user);
        //foreach (var role in userRoles) {
        //    var roleClaims = await _roleManager.GetClaimsAsync(await _roleManager.Roles.SingleAsync(r => r.Name.Equals(role)));
        //    totalClaims.AddRange(roleClaims);
        //}
        var claims = new List<Claim>
        {
            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
            new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
            new Claim(JwtRegisteredClaimNames.Email, user.Email)
        };
        return new JwtSecurityToken(
            _configuration["Token:Issuer"],
            _configuration["Token:Audience"],
            //totalClaims,
            claims
            expires: DateTime.UtcNow.AddHours(12),
            signingCredentials: new SigningCredentials(
                new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Token:Key"])),
                SecurityAlgorithms.HmacSha256)
        );
    }
Run Code Online (Sandbox Code Playgroud)

方法 …

c# jwt asp.net-identity asp.net-core asp.net-core-webapi

1
推荐指数
1
解决办法
4356
查看次数

无法从根提供者解析作用域服务'Microsoft.AspNetCore.Identity.UserManager`1 [IdentityServerSample.Models.ApplicationUser]'

我正在扩展身份服务器以使用自定义身份服务器实现

 public static void UseMongoDbForIdentityServer(this IApplicationBuilder app)
    {

        //Resolve Repository with ASP .NET Core DI help 
        var repository = (IRepository)app.ApplicationServices.GetService(typeof(IRepository));

        //Resolve ASP .NET Core Identity with DI help
        var userManager = (UserManager<ApplicationUser>)app.ApplicationServices.GetService(typeof(UserManager<ApplicationUser>));

        // --- Configure Classes to ignore Extra Elements (e.g. _Id) when deserializing ---
        ConfigureMongoDriver2IgnoreExtraElements();

        var createdNewRepository = false;

        ...
}
Run Code Online (Sandbox Code Playgroud)

这是我的启动文件的样子

      public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<ConfigurationOptions>(Configuration);
     ...

        services.AddIdentityServer(
                  options =>
                  {
                      options.Events.RaiseSuccessEvents = true;
                      options.Events.RaiseFailureEvents = true;
                      options.Events.RaiseErrorEvents = true;
                  }
              )
              .AddMongoRepository()
              .AddMongoDbForAspIdentity<ApplicationUser, IdentityRole>(Configuration)
              .AddClients()
              .AddIdentityApiResources() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-identity asp.net-core identityserver4

1
推荐指数
1
解决办法
2080
查看次数

如何在ASP.net核心身份中实现基于权限的授权?

我正在尝试使用asp.net Identity Core保护我的webAPI。现在,我想动态创建角色,并在我的管理面板中对其进行设置/删除权限。

例如,我有此权限列表:

  • 注册任务
  • 分配任务
  • 更改任务状态
  • 验证任务状态

现在,我想创建不同的角色,并根据需要为他们设置此权限,并将这些角色分配给每个用户。

我在Identity框架的UserManager和RoleManager中进行了搜索,但是无法创建此功能。

有没有实现此功能的方法?我觉得很有用,但这是关于dotnet的

c# asp.net-web-api asp.net-identity asp.net-core

1
推荐指数
1
解决办法
2611
查看次数

.NET MVC Core 2.2 - 无法访问用户相关实体(外键)

我正在写MVC Core 2中的第一个自己的应用程序,我无法访问具有用户外键的Estate Entity.我检查了我的数据库,遗产记录正确存储userId:

当我试图context.Estates.FirstOrDefault(m => m.Id == id);获得一个房地产实体时,但是User == null:

当我尝试通过以下方式访问它时:

var user = await _userManager.GetUserAsync(User);
var estate = user.Estates.FirstOrDefault(m => m.Id == id);
Run Code Online (Sandbox Code Playgroud)

我在Estates列表中得到null异常.同样试图以这种方式保存它给了我一个例外:

var user = await _userManager.GetUserAsync(User);
user.Estates.Add(estate);
Run Code Online (Sandbox Code Playgroud)

但是,当我这样输入时,它会在db中正确保存数据:

var user = await _userManager.GetUserAsync(User);
estate.User = user;
context.Add(estate);
Run Code Online (Sandbox Code Playgroud)

我不知道我在这里做错了什么.我在下面提供了我的代码,希望你能给我一些提示/建议.

这就是我如何基于IdentityDbContext构建上下文:

public class ReaContext : IdentityDbContext<User>
{
    public DbSet<Estate> Estates { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseNpgsql("Server=localhost;Port=5432;Database=rea-dev;User Id=postgres;Password=admin;");
    }

    public ReaContext(DbContextOptions<ReaContext> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-identity entity-framework-core .net-core asp.net-core

1
推荐指数
1
解决办法
393
查看次数