如何从请求中检索令牌



我知道总有一个令牌基本上粘在请求上,现在我想检索一个令牌并粘在上面,希望能有一些想法。谢谢

@GetMapping("/current")
public ResponseEntity<UserDto> getCurrent() {

return ResponseEntity.ok(something);
}

在方法体中,我可能会实现另一个服务,例如构造函数将token作为参数,然后进行一些相等性检查。

在控制器中接受HttpServletRequest。然后您可以从中提取任何标头。

@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安全性,那么您将为用户生成令牌,并"胶水";它们到请求/响应头

例如(这是我当前的jUnit测试(:

protected MockHttpServletRequestBuilder getAuth(String url) {
return MockMvcRequestBuilders.get(url).header("Authorization", this.token);
}

令牌是使用jwt安全性生成的,生成后我可以";"胶水";将其发送到标头。我只需要检查标头中的内容,就可以获得令牌值。

因此,要检查或获取此令牌,您必须检查标头中的内容,就这么简单:(

这是一个非常普遍的例子。但主要的想法是:如果你添加一些东西,你就能得到一些东西。但如果你还没有生成代币,你就不会得到一个"代币";默认情况下";,因为没有,java不会为任何请求生成令牌。这是你必须首先创造的东西。

如果你对我所说的不太熟悉,请从这里开始:https://jwt.io/introduction/

最新更新