使用SpringSecurity管理具体接口访问权限。
需要先有授权服务器和资源服务器
Springboot利用Security做OAuth2授权验证_LO嘉嘉VE的博客-CSDN博客
Springboot利用Security做OAuth2资源服务器_LO嘉嘉VE的博客-CSDN博客
配置接口具体访问权限再有以上两个的基础上就比较简单了
先在ServerConfig中添加注解
@EnableGlobalMethodSecurity(prePostEnabled = true)
再在具体接口中添加注解
@PreAuthorize("hasAuthority('test:test:create')")
这样访问对应的接口就必须是拥有test:test:create权限的用户。
这个权限是在登录时候赋予的
//配置权限,权限应该从数据库中读取,这里简单测试
GrantedAuthority grantedAuthority = new SimpleGrantedAuthority("test:test:create");
grantedAuthorities.add(grantedAuthority);
这样,就完成了具体接口的功能授权。
访问有对应权限的接口或者没有配置权限的接口都是正常的。
如果访问没有对应权限的接口,返回如下:
测试代码地址:
Hello-Security: OAuth2授权服务器