Ocelot中文文档-转换Claims(转)
原文地址:https://www.cnblogs.com/loogn/p/9007841.html
Ocelot允许用户访问claims并把它们转换到头部,请求字符串参数和其他claims中.这仅在用户通过身份验证后才可用。
用户通过身份验证之后,我们运行claims转换中间件.这个中间件允许在授权中间件调用之前转换claims.当用户身份验证之后,首先会调用claims转换到头的中间件,最后调用claims转换到查询字符串的中间件.
执行转换的语法对于每个处理都是相同的。在ReRoute配置中,使用特定名称AddClaimsToRequest,AddHeadersToRequest,AddQueriesToRequest添加一个json字典。
注意,我不是一个编程专家,所以不知道这个语法是否好...
在词典中,这些条目指定了Ocelot应该如何转换! 字典的键将成为claim,头,查询参数的键。
条目的值将被解析成转换的逻辑.首先指定了一个字典访问器,例如Claims[CustomerId].意思是我们想访问claims并获取键为CustomerId的claim类型.然后一个大于号(>)用于分隔.下一个条目是值或带索引器的值.如果指定了单个值,Ocelot将取该值并将其添加到变换中。如果该值有一个索引器,Ocelot将查找在另一个大于符号后面提供的分隔符。 然后,Ocelot会使用分隔符将值分开,并将所需的索引添加到转换中。
Claims 到 Claims 的转换
下面是一个Claims到Claims转换的例子
"AddClaimsToRequest": { "UserType": "Claims[sub] > value[0] > |", "UserId": "Claims[sub] > value[1] > |" }
这显示了Ocelot查看用户的sub声明并将其转换为UserType和UserId声明的转换。 假设sub声明看起来像这样“usertypevalue | useridvalue”。
Claims到头的转换
下面是一个Claims到头转换的例子
"AddHeadersToRequest": {
"CustomerId": "Claims[sub] > value[1] > |"
}
这显示了Ocelot查看用户的sub声明并将其转换为CustomerId头的转换。 假设sub声明看起来像这样“usertypevalue | useridvalue”。
Claims 到查询字符串参数的转换
下面是一个Claims到查询字符串参数转换的例子
"AddQueriesToRequest": {
"LocationId": "Claims[LocationId] > value",
}
这显示了Ocelot查看用户的LocationId声明并将其作为发往下游服务的查询字符串参数LocationId的转换。