令牌应该在路线中吗?

Should the token be in the route?

我在 Asp.net 项目中看到包含令牌的路由。我不在后端编码,但它看起来不安全。 我不确定是否要做这样的事情。

 [HttpGet("{id}/{token}")] `
 ...

如果这不是好的做法,我将如何使用 HTTP-Headers?如果我使用 Headers 发送令牌,我如何 would/should 接收和使用令牌?

谢谢大家

不,完全不推荐这样做。令牌应放在 headers 中,您可以使用 [FromHeader] 绑定访问它,或者在 .net Core 2+ 中使用

var token = Request.Headers["Authorization"];

不,那是 not good practice

通常您在请求的 Authorization header 中发送令牌,例如:

Authorization: Bearer eyJ.....

在后端的控制器中,您使用 [Authorize] 属性装饰方法或整个控制器。

[Authorize]
[HttpGet]
...

中间件会处理剩下的事情,这意味着它会检查令牌是否存在并对其进行验证,并在没有令牌或 invalid/expired 令牌时发送响应。在您的控制器代码中,您不需要直接处理令牌。 Here 是对该主题的简短介绍。