我正在研究一个const replace = date => date.replace(/0?(\d+?)\/0?(\d+?)\/(\d+)/, '$3,$2,$1');
console.log(replace('04/07/2019'));
console.log(replace('20/07/2019'));
console.log(replace('20/10/2019'));
项目。
我有WebApi
:
ApplicationUser
还有public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
和他的界面:
context
我想找到用户。我正在通过以下代码行做到这一点:
public interface ITaskManagerDbContext
{
DbSet<Project> Projects { get; set; }
DbSet<ApplicationUser> Users { get; set; }
Task<int> SaveChangesAsync(CancellationToken cancellationToken);
}
//class
public class TaskManagerDbContext : IdentityDbContext<ApplicationUser>, ITaskManagerDbContext
{
public TaskManagerDbContext(DbContextOptions<TaskManagerDbContext> options)
: base(options)
{
}
public DbSet<Project> Projects { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(TaskManagerDbContext).Assembly);
}
}
我的问题是,如何在我的var user = await this.context.Users.FindAsync(request.ApplicationUserId);
中找到附加到用户的Role
?我不想使用context
中的UserManager
或RoleManager
。是否可以在Identity
中找到用户的角色?
答案 0 :(得分:1)
唯一的绊脚石实际上是User
本身上没有类似Roles
的集合。但是,您可以直接从上下文访问UserRole
并根据用户进行查询:
var roleIds = await _context.UserRoles
.Where(x => x.UserId == user.Id)
.Select(x => x.RoleId)
.ToListAsync();
var roles = await _context.Roles
.Where(x => roleIds.Contains(x.Id))
.ToListAsync();
是的,这需要另外两个查询,但是可以完成工作。当然,更有效的方法是只使用UserManager<TUser>.GetRolesAsync
。