首页 > 解决方案 > 使 Identity Server 4 将查询参数传递给登录控制器

问题描述

当我去授权控制器时(在 Identity Server 4 中实现):

(*)abc.com/authorize?par1=val1&par2=val2

我被重定向到:

(**)abc.com/login?ReturnUrl=abc.com/abc.com%2Fauthorize%3Fpar1%3Dval1%26par2%3Dval2"

可以注意到它ReturnUrl等于 (*) 但只是被 html 编码。我想将par2值作为第二个参数添加到 (**) url 示例中:

abc.com/login?ReturnUrl=abc.com/abc.com%2Fauthorize%3Fpar1%3Dval1%26par2%3Dval2&par2=val2"

如何配置 IdentityServer 来实现这一点?

标签: .netasp.net-coreidentityserver4

解决方案


IdentityServer 是经过认证的OpenId Connect协议实现,它将您的 (*) 请求作为标准授权请求处理,该请求具有预定义的结构

唯一不受规范限制的两个参数state是客户端使用的,应按原样返回响应的参数,以及acr_values专门用于向服务器发送附加参数的参数。

您可以acr_values通过以下方式参与您的目的:&acr_values=par2:val2然后在BuildLoginViewModelAsync(string returnUrl)方法中AccountController您可以将它们作为context?.AcrValues. 您可以扩展LoginViewModel以将价值带入布局。


推荐阅读