asp.net-core - 如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?
问题描述
目前我们有一个 WPF 客户端应用程序,它使用 OAuth 向 ASP MVC 应用程序请求承载令牌。
此配置在定义端点时在启动时进行:
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
客户端 WPF 应用程序通过向 [resourceBaseAddress/Token] 发出 POST 请求来请求令牌。我将假设的请求内容与我的问题无关。
问题是我的“resourceBaseAddress”包含一个尾部正斜杠,因此请求以http://contoso.com//Token之类的方式形成(注意双斜杠)。它目前有效。
但是现在我们正在迁移到 ASP.NET Core,因此我不得不添加一个带有 (Jwt) 令牌操作的控制器,我在使用双正斜杠路由这个请求时遇到了问题。
由于我无法更改客户端应用程序上的代码,如何正确配置此控制器方法?
解决方案
重写请求路径的中间件怎么样?你尝试过这样的事情吗?
例子:
app.Use(async (context, next) =>
{
var url = context.Request.Path.Value;
if (url.EndsWith("//Token"))
{
// rewrite and continue processing
context.Request.Path = "/Token";
}
await next();
});
app.UseRouting();
还有一个像这样的简单控制器:
[Route("[controller]")]
public class TokenController : ControllerBase
{
[HttpPost]
public string Post()
{
return "Token";
}
}
推荐阅读
- r - 比较两条曲线的趋势差异
- openmpi - abinit 中的字符串方法教程 - 未生成输出文件
- python - 如何读取我的 exel 表中的特定数据并从读取的每个数据集创建一个图?(Python)
- java - Adler32 生成的校验和与 .txt 文件校验和不匹配
- python - Python:根据匹配从列表中写入文件
- angular - 如何在 Angular 中正确配置路由
- excel - 交互式 Excel 图表:根据下拉选择获取多列的值
- ubuntu - AWS Ubuntu:从 Snap Store 配置 Ejabberd 主机
- python-3.x - TypeError: 'int' object is not iterable 这是一个在 6 位密码中计算不同数量结果的程序
- node.js - 使用 node-cron 进行调度部署 Discord.js 机器人时的端口绑定时间问题