0
我已经安装了IS3/MR/IDM组合,一切工作正常。我现在需要做的是让登录的用户(ID,Name等)可用于我的所有MVC控制器,所以显而易见的选择是创建一个基本控制器,以便所有其他控制器都从它继承。跨客户端应用程序访问用户对象
任何人都可以建议,如果这是实现这一目标的最好方法,也许提供一些示例代码?
我已经安装了IS3/MR/IDM组合,一切工作正常。我现在需要做的是让登录的用户(ID,Name等)可用于我的所有MVC控制器,所以显而易见的选择是创建一个基本控制器,以便所有其他控制器都从它继承。跨客户端应用程序访问用户对象
任何人都可以建议,如果这是实现这一目标的最好方法,也许提供一些示例代码?
假设您已经对Identity Server 3进行了成功的身份验证,则应该已经全部设置好了。如果您在CallApiController看,你会发现这个方法
// GET: CallApi/UserCredentials
public async Task<ActionResult> UserCredentials()
{
var user = User as ClaimsPrincipal;
var token = user.FindFirst("access_token").Value;
var result = await CallApi(token);
ViewBag.Json = result;
return View("ShowApiResult");
}
用户变量应该已经包含了用户的姓名,身份证和这种要求。所以
var id = user.FindFirst(Constants.ClaimTypes.Subject).Value;
var firstName = user.FindFirst(Constants.ClaimTypes.GivenName).Value;
var middleName = user.FindFirst(Constants.ClaimTypes.MiddleName).Value;
var lastName = user.FindFirst(Constants.ClaimTypes.LastName).Value;
当然,所有的假设,你有你的用户信息存储的信息,我不检查,如果它们不存在,将发生的错误。
你在什么堆栈上?你需要用户完成什么?假设更新的.NET,MVC控制器上已经有一个User对象可以被转换为'ClaimsPrincipal'。 – beavel