SpringBoot登录拦截配置详解(实测可用)

网友投稿 267 2022-11-30


SpringBoot登录拦截配置详解(实测可用)

背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家。

1.自定义登录拦截器LoginInterceptor

public class LoginInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

// 这里是关键

User loginUser = (User) request.getSession().getAttribute("user");

if (loginUser == null) {

// 未登录抛出异常,交给统一异常处理器处理

throw new CustomException(ResultCode.USER_NOT_LOGIN);

}

return true;

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

}

}

2.在WebConfigurer中添加拦截器

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

public void addInterceptors(InterceptorRegistry registry) {

//注册TestInterceptor拦截器

registry.addInterceptor(new LoginInterceptor())

.addPathPatterns("/**"ZgPuA)

// 排除登录注册等接口,注意这里的格式是 /**/xxx

.excludePathPatterns("/**/login", "/**/register");

}

}

3.登录接口

/**

* 登录

* @return 用户信息

*/

public User login(UserVO userVO. HttpServlet) {

String username = userVO.getUsername();

String password = userVO.getPassword();

User user = userMapper.findByUsernameAndPassword(username, password);

// 未找到用户

if(user == null) {

throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);

}

// 设置session中的用户信息

SessionUtils.setSessionAttribute("user", user);

return user;

}

文中的代码细节不一一列举了,这里重点讨论的拦截器,感兴趣的朋友可以私聊我获取其他代码。

结果

未登录的情况下,请求普通接口提示未登录。

请求登录接口。

登录后再去请求普通接口,返回正常。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JAVA 内存溢出案例汇总
下一篇:详解Mybatis中的 ${} 和 #{}区别与用法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~