如何从请求中检索令牌
How to retrieve a token from a request
我知道总有一个令牌基本上粘在请求上,现在我想检索一个令牌并卡住,希望能有一些想法。谢谢
@GetMapping("/current")
public ResponseEntity<UserDto> getCurrent() {
return ResponseEntity.ok(something);
}
在方法体中,我可能会实现另一个服务,例如构造函数将令牌作为参数,然后进行一些相等性检查。
在您的控制器中接受 HttpServletRequest
。然后你可以从中提取任何header。
@GetMapping("/current")
public ResponseEntity<UserDto> getCurrent(HttpServletRequest request) {
String token = request.getHeader("Authorization");
return ResponseEntity.ok(something);
}
如果你不想从控制器中获取 HttpServletRequest
你可以 Autowire
像这样
@Autowired
private HttpServletRequest request;
或执行以下操作
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
你的问题比较难懂。您的“令牌”可以是任何东西。
我会尽量回答你的问题:
例如,您有一些选项仅供注册用户使用。如果您使用的是 jwt 安全性,则为用户生成令牌并将它们“粘合”到 request/response headers
例如(这是我当前的 jUnit 测试):
protected MockHttpServletRequestBuilder getAuth(String url) {
return MockMvcRequestBuilders.get(url).header("Authorization", this.token);
}
令牌是使用 jwt 安全性生成的,生成后我可以将其“粘贴”到 headers。我可以检查 header 中的内容并获取令牌值。
因此,要检查或获取此令牌,您必须检查 header 中的内容,就这么简单:)
这是非常普遍的例子。但主要思想是:
如果你添加一些东西 - 你可以得到一些东西。但是,如果您还没有生成令牌 - 您将不会“默认”获得令牌,因为 none、java 不会为任何请求生成令牌。这是你必须首先创建的东西。
如果您不了解我所说的内容 - 请从这里开始:
https://jwt.io/introduction/
我知道总有一个令牌基本上粘在请求上,现在我想检索一个令牌并卡住,希望能有一些想法。谢谢
@GetMapping("/current")
public ResponseEntity<UserDto> getCurrent() {
return ResponseEntity.ok(something);
}
在方法体中,我可能会实现另一个服务,例如构造函数将令牌作为参数,然后进行一些相等性检查。
在您的控制器中接受 HttpServletRequest
。然后你可以从中提取任何header。
@GetMapping("/current")
public ResponseEntity<UserDto> getCurrent(HttpServletRequest request) {
String token = request.getHeader("Authorization");
return ResponseEntity.ok(something);
}
如果你不想从控制器中获取 HttpServletRequest
你可以 Autowire
像这样
@Autowired
private HttpServletRequest request;
或执行以下操作
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
你的问题比较难懂。您的“令牌”可以是任何东西。
我会尽量回答你的问题:
例如,您有一些选项仅供注册用户使用。如果您使用的是 jwt 安全性,则为用户生成令牌并将它们“粘合”到 request/response headers
例如(这是我当前的 jUnit 测试):
protected MockHttpServletRequestBuilder getAuth(String url) {
return MockMvcRequestBuilders.get(url).header("Authorization", this.token);
}
令牌是使用 jwt 安全性生成的,生成后我可以将其“粘贴”到 headers。我可以检查 header 中的内容并获取令牌值。
因此,要检查或获取此令牌,您必须检查 header 中的内容,就这么简单:)
这是非常普遍的例子。但主要思想是: 如果你添加一些东西 - 你可以得到一些东西。但是,如果您还没有生成令牌 - 您将不会“默认”获得令牌,因为 none、java 不会为任何请求生成令牌。这是你必须首先创建的东西。
如果您不了解我所说的内容 - 请从这里开始: https://jwt.io/introduction/