SpringBoot登录拦截配置详解(实测可⽤)
背景:写⼀个⽤户登录拦截,在⽹上了⼀圈没到好⽤的,于是⾃⼰试验了⼀下,总结出来,分享给⼤家。
1.⾃定义登录LoginInterceptor
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 这⾥是关键
User loginUser = (User) Session().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("/**")
// 排除登录注册等接⼝,注意这⾥的格式是 /**/xxx
.excludePathPatterns("/**/login", "/**/register");
}
}
3.登录接⼝
/**
* 登录
* @return ⽤户信息
*/
public User login(UserVO userVO. HttpServlet) {
String username = Username();
String password = Password();
User user = userMapper.findByUsernameAndPassword(username, password);
// 未到⽤户
if(user == null) {
throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
}
// 设置session中的⽤户信息
springboot和过滤器SessionUtils.setSessionAttribute("user", user);
return user;
}
⽂中的代码细节不⼀⼀列举了,这⾥重点讨论的,感兴趣的朋友可以私聊我获取其他代码。
结果
未登录的情况下,请求普通接⼝提⽰未登录。
请求登录接⼝。
登录后再去请求普通接⼝,返回正常。
-END-
到此这篇关于SpringBoot登录拦截配置详解(实测可⽤)的⽂章就介绍到这了,更多相关SpringBoot登录拦截内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论