赞
踩
在Spring Boot应用程序中创建一个过滤器类,用于处理请求:
- @Component
- public class AuthenticationFilter implements Filter {
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
-
- // 获取请求头中的Token
- HttpServletRequest req = (HttpServletRequest) request;
- String token = req.getHeader("Authorization");
-
- // 验证Token是否有效
- if (isValidToken(token)) {
- // Token有效,继续执行请求处理链
- chain.doFilter(request, response);
- } else {
- // Token无效,返回401错误
- HttpServletResponse res = (HttpServletResponse) response;
- res.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
- }
- }
-
- private boolean isValidToken(String token) {
- // 在这里进行Token验证,比如验证Token的签名、过期时间等
- // 如果Token有效,返回true;否则返回false
- // ...
- return false;
- }
-
- }
-
然后,在Spring Boot应用程序中配置该过滤器:
- @Configuration
- public class WebConfig implements WebMvcConfigurer {
-
- @Autowired
- private AuthenticationFilter authenticationFilter;
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(authenticationFilter);
- }
-
- }
-
最后,在Vue应用程序中,可以通过在axios的拦截器中添加请求头来调用该过滤器:
- import axios from 'axios';
-
- axios.interceptors.request.use(
- config => {
- config.headers['Authorization'] = 'Bearer ' + getToken(); // 设置请求头
- return config;
- },
- error => {
- return Promise.reject(error);
- }
- );
-
getToken()是一个自定义的函数,用于获取存放在前端的Token。在实际开发中,Token通常会在用户登录成功后由后端返回,并存储在前端的localStorage或sessionStorage中。
一般情况下,后端会返回一个包含Token的JSON对象,例如:
- {
- "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
- }
-
- const TOKEN_KEY = 'token';
-
- function getToken() {
- return localStorage.getItem(TOKEN_KEY);
- }
-
这样,每次向后端发送请求时,都会在请求头中添加一个Authorization字段,该字段的值是通过getToken()函数获取的。在AuthenticationFilter中,就可以通过获取该请求头中的Token来进行验证。如果Token无效,则返回401错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。