如何使用ASP.NET Core获得另一个用户的声明

use*_*042 5 c# asp.net-identity asp.net-core

我仍在用asp.net core学习身份。我正在做一个基于声明的令牌授权。大多数示例都是关于“当前”登录用户的。就我而言,我的RPC服务正在身份数据库中接收某个用户的用户名和密码。我需要

  1. 验证存在具有此类凭据的用户
  2. 获得该用户的所有声明

为了验证用户是否存在,我正在使用以下代码:

ApplicationUser applicationUser = await _userManager.FindByNameAsync(username);
bool exist = await _userManager.CheckPasswordAsync(applicationUser, password);
if (!exist)
{
    // log and return
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何正确执行第二步。我想我可以做一个简单的linq来收集所有用户的声明,但是我敢肯定有一种使用身份方法的更好的方法。

hai*_*770 7

您需要使用该GetClaimsAsync()方法。例如:

var claims = await _userManager.GetClaimsAsync(applicationUser);
Run Code Online (Sandbox Code Playgroud)

参见MSDN