- 拦截操作类
package com.union.pro.filter;
import com.union.pro.pojo.User;
import com.union.pro.service.user.UserService;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Method;
@Configuration
/**
* 拦截请求,判断是否具有权限
*/
public class RequestInterceptor extends HandlerInterceptorAdapter {
@Resource
private UserService userService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String openid = request.getHeader("openid");
if (openid == null){
// 没有携带openid,进行重定向
response.sendRedirect("/user/unLogin");
return false;
}
User user = this.userService.login(openid);
if (user == null){
response.sendRedirect("/user/unLogin");
return false;
}
return true;
}
}
- 拦截配置类
package com.union.pro.filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Resource
private RequestInterceptor requestInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 这里添加多个拦截器
// 登录拦截器
registry.addInterceptor(requestInterceptor).addPathPatterns("/**") //需要拦截的
.excludePathPatterns("/user/**","/union/**"); // 不需要拦截的
}
}
参考:https://blog.csdn.net/qq_40008535/article/details/89514490
Spring MVC权限拦截器实现
本文介绍了一种基于Spring MVC的权限拦截器实现方法,通过自定义拦截器类RequestInterceptor来判断用户请求是否携带openid,并验证用户权限。该拦截器在用户未登录或无权限时会重定向至登录页面。
6208

被折叠的 条评论
为什么被折叠?



