登錄攔截和和權限攔截實現類似
首先自定義一個【
DefineAdapter】類,這個類我是用來放自定義的配置(比如 自定義請求參數,自定義攔截器等),集成WebMvcConfigurerAdapter 重寫他的addInterceptors 方法,將你攔截器的實現類
加入即可,
DefineAdapter 代碼如下:
@Configuration
public class DefineAdapter extends WebMvcConfigurerAdapter {
@Autowired
public RoleInterceptor roleInterceptor;//用戶角色攔截器
@Autowired
public LoginInterceptor loginInterceptor;//用戶登錄攔截器
@Autowired
MeidaRequestDataCustomArgumentResolver meidaRequestDataCustomArgumentResolver;//自定義參數綁定
//自定義參數綁定
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(meidaRequestDataCustomArgumentResolver);
}
//自定義攔截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//用戶角色攔截器
registry.addInterceptor(roleInterceptor).
addPathPatterns("/**”);
//用戶登錄攔截器
registry.addInterceptor(loginInterceptor).
addPathPatterns("/**").
addPathPatterns("/*/login").
addPathPatterns("/*/h5/login").
excludePathPatterns("/switch/*");
super.addInterceptors(registry);
}
|
|
(自定義參數綁定 可以不用管,你就當沒有那段代碼!!)
addInterceptors:添加你自定義攔截器的實現邏輯類
addPathPatterns:添加你要攔截的請求路徑,如果有多個路徑,就繼續addPathPatterns
excludePathPatterns:添加你不需要攔截的請求路徑
我攔截器具體的實現邏輯是LoginInterceptor 這個類,代碼如下:
@Service public class LoginInterceptor extends HandlerInterceptorAdapter { { protected static final Log logger = LogFactory.getLog(LoginInterceptor.class); public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){ String userId = request.getParameter("userId"); if (StringUtils.isNotBlank(userId)){ return false; } }
繼承 HandlerInterceptorAdapter 抽象類,實現preHandle方法,在里面寫你的攔截邏輯。
完!