洞察探索如何通过智能车载终端技术与物联网结合,实现企业的数字化转型,确保数据安全与合规,并提升整体运营效率。
576
2023-05-09
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~