.net - 使 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 来实现这一点?
解决方案
IdentityServer 是经过认证的OpenId Connect
协议实现,它将您的 (*) 请求作为标准授权请求处理,该请求具有预定义的结构。
唯一不受规范限制的两个参数state
是客户端使用的,应按原样返回响应的参数,以及acr_values
专门用于向服务器发送附加参数的参数。
您可以acr_values
通过以下方式参与您的目的:&acr_values=par2:val2
然后在BuildLoginViewModelAsync(string returnUrl)
方法中AccountController
您可以将它们作为context?.AcrValues
. 您可以扩展LoginViewModel
以将价值带入布局。
推荐阅读
- c# - 项目 - C# 的配置类型实用程序
- c - 为什么信号量的等待函数中有一个while循环,什么时候也可以使用if?
- dom - 即使不包含 Node,Selection.containsNode() 也会返回 true
- codeigniter - CodeIgniter 4 - 拒绝获取不安全的标头“Debugbar-Time”
- javascript - 计算内部数组的数量和数组?
- sql - 是否可以将多个 SQL 语句组合在一起?
- pandas - 如何使数据透视表的熊猫索引成为列名的一部分?
- java - XSSFSheet Apache POI - 是否可以锁定所有内容但允许更新和插入行?
- konvajs - Konva onDragMove 和 onDragEnd 不更新位置?
- amazon-web-services - DynamoDB 一对多关系非规范化或邻接?