gpt4 book ai didi

c# - 使用授权 header 重定向到操作

转载 作者:行者123 更新时间:2023-12-05 05:14:51 24 4
gpt4 key购买 nike

我有一个简单的“门”方法,它确定用户的 jwt token 是否有效,然后将他重定向到某个操作

我有两个端点需要授权,

  • 其中一个只是用来判断token是否ok(否则返回401,是则OK)

  • 第二个是需要有效 token 的保护区

我的问题是第一个端点返回该 token 是好的,但第二个端点返回 401

因为“解决方法”是:返回 View 而不是操作

我意识到我忘记了授权 header ,但是

how to add headers to redirect to action?

return redirect to action 而不是 View 很重要,因为 View 浏览器显示旧 url,在这种情况下是 localhost/Gate 而不是 localhost/授权

public async Task<IActionResult> Gate()
{
var token = ExtractToken();

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
var get = client.GetAsync($"https://localhost:12345/TokenValidator").Result;

switch (get.StatusCode)
{
case HttpStatusCode.Unauthorized:
return RedirectToAction("Unauthorized");
case HttpStatusCode.OK:
return RedirectToAction("Authorized"); // it enters this case
default:
return RedirectToAction("Index");
}
}

[Route("TokenValidator")]
[Authorize]
public IActionResult TokenValidator()
{
return new OkObjectResult("OK");
}

[Route("Authorized")]
[Authorize]
public IActionResult Authorized()
{
return View();
}

最佳答案

感谢 Jean-François Fabre 删除了我的评论。

有时,未解决帖子中的旧评论有助于恢复辩论。

有兴趣的可以看答案

在 Startup.cs 中(配置)添加代码:

    app.UseSession();
app.Use(async (context, next) =>
{
var JWToken = context.Session.GetString("JWToken");
if (!string.IsNullOrEmpty(JWToken))
{
context.Request.Headers.Add("Authorization", "Bearer " + JWToken);
}
await next();
});

在 View 中, token 验证后:

HttpContext.Session.SetString("JWToken", post.AccessToken);

然后就可以正常进行了。

我使用 RedirectToAction:

return RedirectToAction(actionName: "Default", controllerName: "Usuario");

拥抱

关于c# - 使用授权 header 重定向到操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com