当前位置:   article > 正文

在Spring Boot和Vue中实现请求过滤器以验证请求头中的Token_springboot 监听前端请求头是否存在 token

springboot 监听前端请求头是否存在 token

在Spring Boot应用程序中创建一个过滤器类,用于处理请求:

  1. @Component
  2. public class AuthenticationFilter implements Filter {
  3. @Override
  4. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
  5. throws IOException, ServletException {
  6. // 获取请求头中的Token
  7. HttpServletRequest req = (HttpServletRequest) request;
  8. String token = req.getHeader("Authorization");
  9. // 验证Token是否有效
  10. if (isValidToken(token)) {
  11. // Token有效,继续执行请求处理链
  12. chain.doFilter(request, response);
  13. } else {
  14. // Token无效,返回401错误
  15. HttpServletResponse res = (HttpServletResponse) response;
  16. res.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
  17. }
  18. }
  19. private boolean isValidToken(String token) {
  20. // 在这里进行Token验证,比如验证Token的签名、过期时间等
  21. // 如果Token有效,返回true;否则返回false
  22. // ...
  23. return false;
  24. }
  25. }

然后,在Spring Boot应用程序中配置该过滤器:

  1. @Configuration
  2. public class WebConfig implements WebMvcConfigurer {
  3. @Autowired
  4. private AuthenticationFilter authenticationFilter;
  5. @Override
  6. public void addInterceptors(InterceptorRegistry registry) {
  7. registry.addInterceptor(authenticationFilter);
  8. }
  9. }

最后,在Vue应用程序中,可以通过在axios的拦截器中添加请求头来调用该过滤器:

  1. import axios from 'axios';
  2. axios.interceptors.request.use(
  3. config => {
  4. config.headers['Authorization'] = 'Bearer ' + getToken(); // 设置请求头
  5. return config;
  6. },
  7. error => {
  8. return Promise.reject(error);
  9. }
  10. );

getToken()是一个自定义的函数,用于获取存放在前端的Token。在实际开发中,Token通常会在用户登录成功后由后端返回,并存储在前端的localStorage或sessionStorage中。

一般情况下,后端会返回一个包含Token的JSON对象,例如:

  1. {
  2. "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
  3. }
  1. const TOKEN_KEY = 'token';
  2. function getToken() {
  3. return localStorage.getItem(TOKEN_KEY);
  4. }

这样,每次向后端发送请求时,都会在请求头中添加一个Authorization字段,该字段的值是通过getToken()函数获取的。在AuthenticationFilter中,就可以通过获取该请求头中的Token来进行验证。如果Token无效,则返回401错误。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/924290
推荐阅读
相关标签
  

闽ICP备14008679号