跨客户端应用程序访问用户对象

时间:2016-11-12 16:01:11

标签: identityserver3 membershipreboot

我已经安装了IS3 / MR / IDM组合,一切正常。我现在需要做的是让登录用户(ID,名称等)可用于我的所有MVC控制器,因此显而易见的选择是创建一个基本控制器,以便所有其他控制器继承它。

有人可以建议这是否是实现这一目标的最佳方法,并提供一些示例代码?

1 个答案:

答案 0 :(得分:0)

假设您已经成功通过身份验证服务器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");
    }

用户变量应该已经包含对用户名称,Id等的声明。所以

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;

当然,所有这些都假定您已经在您的用户信息存储中获得了这些信息,并且我没有检查如果它们不在那里将会发生的错误。