JAVA全系列 教程
3762个小节阅读:7095.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
我们要对接口进行鉴权配置,即用户拥有权限才能访问接口。
开启鉴权配置注解
xxxxxxxxxx
// Security配置类
@Configuration
// 开启鉴权配置注解
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter{
}
在需要鉴权的接口上方添加鉴权注解
xxxxxxxxxx
/**
* 分页查询管理员
* @param page 页码
* @param size 每天条数
* @return 查询结果
*/
@GetMapping("/search")
@PreAuthorize("hasAnyAuthority('/admin/all')")
public BaseResult<Page<Admin>> search(int page, int size){
Page<Admin> adminPage = adminService.search(page, size);
return BaseResult.ok(adminPage);
}
/**
* 分页查询角色
* @param page 页码
* @param size 每页条数
* @return 查询结果
*/
@GetMapping("/search")
@PreAuthorize("hasAnyAuthority('/role/all')")
public BaseResult<Page<Role>> search(int page, int size){
Page<Role> rolePage = roleService.search(page, size);
return BaseResult.ok(rolePage);
}
使用不同权限的用户登录,查看他们是否能访问这些接口
测试时,当用户权限不足时,系统会抛出500异常,这是由于全局异常处理器先处理了异常,使得异常没有交由
AccessDeniedHandler
。此时我们需要在管理员API模块添加异常处理器,当捕获到AccessDeniedException
异常时,直接抛出,此时异常就会交给AccessDeniedHandler
处理。xxxxxxxxxx
// 统一异常处理器
@RestControllerAdvice
public class AccessDeniedExceptionHandler {
// 处理权限不足异常,捕获到异常后再次抛出,交给AccessDeniedHandler处理
@ExceptionHandler(AccessDeniedException.class)
public void defaultExceptionHandler(AccessDeniedException e) throws AccessDeniedException{
throw e;
}
}