修改之前你发的代码,使前端发送请求时携带token并使后端过滤器的 String token = request.getHeader("token");能够获得token
时间: 2024-05-09 22:18:25 浏览: 143
好的,我明白了。为了让前端发送请求时携带token,你可以在前端代码中添加一个请求头,通过这个请求头来传递token。具体实现方法如下:
1. 在前端代码中添加一个请求头,比如叫做 "Authorization",它的值就是token。
```javascript
const token = "这里填写你的token";
axios.defaults.headers.common['Authorization'] = token;
```
2. 在后端代码中添加一个过滤器,过滤器的作用是在每次请求到达后端时,从请求头中获取到token,然后保存起来,方便后面的操作。
```java
public class TokenFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String token = httpServletRequest.getHeader("Authorization");
// 保存token
TokenHolder.setToken(token);
filterChain.doFilter(request, response);
}
}
```
在这个过滤器中,我们通过 request.getHeader("Authorization") 来获取到请求头中的token,然后把它保存到一个全局的变量中,这里我们假设这个全局变量叫做 TokenHolder。
3. 接下来你需要修改你的代码,来使用这个 TokenHolder 来获取token。
```java
public class UserController {
public void getUser() {
// 从TokenHolder中获取token
String token = TokenHolder.getToken();
// 发送请求
restTemplate.getForObject(url, User.class);
}
}
```
这里我们使用 TokenHolder.getToken() 来获取到保存在过滤器中的token,然后在发送请求时把它带上。这样就实现了前后端通信时携带token的功能。