将额外的信息传递给IProfileService

时间:2019-01-22 14:36:10

标签: identityserver4

在实现IS4时,我们希望在/Account/Login表单上有几个额外的字段(我们是基于Quickstart UI构建的)。当调用IProfileService时,需要访问由这些字段(位置信息-1)建筑物和2)建筑物内的站点提供的数据,因为它们是用于确定{{ 1}}。我们尝试将数据存储在GetProfileDataAsync()中,但是由于调用HttpContext.Items之前发生了重定向,因此该数据丢失了。

对于如何将这些数据传递回IProfileService,您有任何建议吗?

1 个答案:

答案 0 :(得分:1)

HttpContext的扩展方法之一SignInAsync允许您传递任何与登录有关的额外声明。如果您在从AccountController调用SignInAsync时添加“ building”和“ building_station”作为声明,则应该可以通过HttpContext访问它。

为此,您需要通过依赖注入将HttpContextAccessor添加到IProfileService实现中,一旦从中获取HttpContext,您就应该能够在HttpContext.User中找到适当的声明。