JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之拦截器Interceptor
讲解完了拦截器的基本操作之后,接下来我们需要完成最后一步操作:通过拦截器来完成案例当中的登录校验功能。
登录校验的业务逻辑以及操作步骤我们前面已经分析过了,和登录校验Filter过滤器当中的逻辑是完全一致的。现在我们只需要把这个技术方案由原来的过滤器换成拦截器interceptor就可以了。
1). TokenInterceptor
在 com.zidiu.interceptor 包下创建 TokenInterceptor
- @Slf4j
- @Component
- public class TokenInterceptor implements HandlerInterceptor {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- //1. 获取请求url。
- String url = request.getRequestURL().toString();
-
- //2. 判断请求url中是否包含login,如果包含,说明是登录操作,放行。
- if(url.contains("login")){ //登录请求
- log.info("登录请求 , 直接放行");
- return true;
- }
-
- //3. 获取请求头中的令牌(token)。
- String jwt = request.getHeader("token");
-
- //4. 判断令牌是否存在,如果不存在,返回错误结果(未登录)。
- if(!StringUtils.hasLength(jwt)){ //jwt为空
- log.info("获取到jwt令牌为空, 返回错误结果");
- response.setStatus(HttpStatus.SC_UNAUTHORIZED);
- return false;
- }
-
- //5. 解析token,如果解析失败,返回错误结果(未登录)。
- try {
- JwtUtils.parseJWT(jwt);
- } catch (Exception e) {
- e.printStackTrace();
- log.info("解析令牌失败, 返回错误结果");
- response.setStatus(HttpStatus.SC_UNAUTHORIZED);
- return false;
- }
-
- //6. 放行。
- log.info("令牌合法, 放行");
- return true;
- }
-
- }
复制代码 2). 配置拦截器
- @Configuration
- public class WebConfig implements WebMvcConfigurer {
- //拦截器对象
- @Autowired
- private TokenInterceptor tokenInterceptor;
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- //注册自定义拦截器对象
- registry.addInterceptor(tokenInterceptor).addPathPatterns("/**");
- }
- }
复制代码
demo.zip
(115.84 KB, 下载次数: 0, 售价: 50 金币)
SpringBoot3+Vue3开发综合实战项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战
|