A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】学成在线-第18天-讲义-用户授权 二

2.4 方法授权测试
重启课程管理服务,测试上边两个方法。
使用postman测试,测试前执行登录,并且将jwt令牌添加到header
1Get 请求 http://www.xuecheng.com/api/course/coursebase/get/4028e581617f945f01617f9dabc40000
用户拥有course_get_baseinfo权限,可以正常访问

2) Get请求 http://www.xuecheng.com/api/course/coursebase/list/1/2
由于用户没有查询课程列表方法的权限,所以无法正常访问,其它方法可以正常访问。


控制台报错:
org.springframework.security.access.AccessDeniedException: 不允许访问
说明:如果方法上没有添加授权注解spring security将不进行授权控制,只要jwt令牌合法则可以正常访问。
3)异常处理
上边当没有权限访问时资源服务应该返回下边的错误代码:
[AppleScript] 纯文本查看 复制代码
 UNAUTHORISE(false,10002,"权限不足,无权操作!") 


进入资源服务(这里是课程管理),添加异常类AccessDeniedException.class与错误代码 10002 的 对应关系
[AppleScript] 纯文本查看 复制代码
 @ControllerAdvice
public class CustomExceptionCatch extends ExceptionCatch {
static {
//除了CustomException以外的异常类型及对应的错误代码在这里定义,,如果不定义则统一返回固定的错误信息
builder.put(AccessDeniedException.class, CommonCode.UNAUTHORISE);
}
} 


再次测试,结果如下:


2.5 小结
方法授权步骤:
1ResourceServerConfifig类上添加注解,如下:
[AppleScript] 纯文本查看 复制代码
 //激活方法上的PreAuthorize注解
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) 


2、在方法添加授权注解
[AppleScript] 纯文本查看 复制代码
 @PreAuthorize("hasAuthority('???')")


3、如果方法上不添加授权注解表示此方法不需要权限即可访问。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马