0

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

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

4

1 回答 1

0

假设您已经成功通过 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");
    }

用户变量应该已经包含用户名、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;

当然,这一切都假设您已经在用户信息存储中获得了该信息,并且我不会检查如果它们不存在将会发生的错误。

于 2016-11-14T13:31:01.187 回答