首先
拦截器要放在启动类里面,因为,我们要运动string boot,必须要启动启动类,所以拦截器要放在启动器里面。
拦截器代码如下:
@Override
public void addInterceptors(InterceptorRegistry registry){
InterceptorRegistration ir=registry.addInterceptor(new Interceptor1());
ir.addPathPatterns("/**");
ir.excludePathPatterns("/admin/yzm","/user/findAll","/admin/login","/js/**","/html/**","/images/**","/css/**","/kindeditor/**");
}
这些代码中,最后这一句代码表示允许访问的地址。
ir.excludePathPatterns("/admin/login");
如果/admin/login这个访问路径,在项目中存在,那么当你访问localhost:8080/admin/login的时候,是不会被拦截的
ir.excludePathPatterns();
当这句代码中没有"/admin.login"时
如果/admin/login这个访问路径,在项目中存在,那么当你访问localhost:8080/admin/login的时候,是会被拦截的。
其次
我们还要有一个拦截跳转页面的代码。
Interceptor1.java
package com.example.demo.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class Interceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception{
HttpSession session=request.getSession();
Object ob=session.getAttribute("uname");
if (ob!=null) {
return true;
}
session.setAttribute("preurl",request.getRequestURI());
StringBuffer url = request.getRequestURL();
String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString();
response.sendRedirect(tempContextUrl);
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler,ModelAndView model) throws Exception{
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler,Exception ex) throws Exception{
}
}
这个代码中,我们可以修改它的跳转页面。
String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString();
这句话是跳转到localhost:8080页面。
response.sendRedirect(tempContextUrl);
这里是服务器跳转页面的代码,这里你可以把tempContextUrl换成你的登录页面,这样的话,拦截器在你访问未开放页面时,会自动跳转到你的登录页面。
最后
我们的拦截器就全部完成了,希望对你们有所帮助。