springboot用户权限拦截器
时间: 2023-11-15 17:56:23 浏览: 103
好的,针对您的问题,Spring Boot提供了一种基于拦截器的用户权限控制方式。具体实现步骤如下:
1. 创建一个拦截器类,实现HandlerInterceptor接口,并重写preHandle方法,在该方法中进行用户权限校验。
2. 在Spring Boot的配置类中,通过addInterceptors方法将拦截器注册到Spring Boot中。
3. 在需要进行用户权限控制的Controller方法上添加@PreAuthorize注解,指定需要的权限。
下面是一个简单的示例代码:
```java
public class UserInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 获取用户信息
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
// 用户未登录,跳转到登录页面
response.sendRedirect("/login");
return false;
}
// 校验用户权限
if (!user.hasPermission(request.getRequestURI())) {
// 用户没有访问该资源的权限,返回403错误
response.setStatus(HttpStatus.FORBIDDEN.value());
return false;
}
return true;
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private UserInterceptor userInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userInterceptor).addPathPatterns("/**");
}
}
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
@PreAuthorize("hasRole('ADMIN')")
public List<User> getUsers() {
// 获取用户列表
}
}
```
阅读全文