添加路徑攔截功能
思路:默認攔截所有路徑,放開一些不重要的路徑,其他路徑根據登錄攔截器判斷是否放行
- 主要代碼如下
- 登錄攔截器
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Autowired
ReqSearchServiceImpl service;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//1、獲得cookie
Cookie[] cookies=request.getCookies();
//沒有cookie信息,則重定向到登錄界面
if(null==cookies){
response.sendRedirect(request.getContextPath()+"/toLoginPage");
return false;
}
// 定義cookie_username,用戶的一些登錄信息,例如用戶名,密碼等
String username=null;
//獲取cookie裏面的一些用戶信息
for (Cookie item : cookies) {
if("username".equals(item.getName())){
username=item.getValue();
break;
}
}
//如果cookie裏面沒有包含用戶的一些登錄信息,則重定向到登錄界面
if(StringUtils.isEmpty(username)){
response.sendRedirect(request.getContextPath()+"/toLoginPage");
return false;
}
//獲取HttpSession對象
HttpSession session=request.getSession();
//獲取我們登錄後存在session中的用戶信息,如果爲空,表示session已經過期
Object object=session.getAttribute("user");
if(null==object){
//將用戶保存到session中
UserMore userMore=service.getUserByUsername(username);
session.setAttribute("user",userMore);
}
//已經登錄
return true;
}
}
- web配置類
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration ir=registry.addInterceptor(loginInterceptor);
//攔截路徑
ir.addPathPatterns("/*");
//不攔截路徑
List<String> irs=new ArrayList<>();
irs.add("/toLoginPage");
irs.add("/getVerify");
irs.add("/checkVerify");
irs.add("/toRegisterPage");
irs.add("/addUser");
irs.add("/getLoginResult");
ir.excludePathPatterns(irs);
}
}
明天任務:學習mybatis分頁插件,實現查詢分頁展示