SpringSecurity
授权
权限系统可以使得不同的用户可以使用不同的功能
所以我们需要在后端进行相应的权限判断,判断当前用户是否具有相应的权限,必须基于所需权限才能进行相应的操作
- 授权原理
在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验,在FilterSecurityInterceptor中会从securityContextHolder获取其中的Authentication,然后获取其中的权限信息,当前用户是否拥有访问当前资源所需的权限
框架提供了基于注解的权限控制的方案:
开启权限注解的相关配置:
@EnableGlobalMathodSecurity(prePostEnabled= true)
注解放在所继承WebSecurityConfigurerAdapter的配置类上
然后可以使用对应的权限注解
@RestController
public class HelloController{
@RequestMapping("/hello")
@PreAuthorize("hasAuthority('test')")
public String hello(){
return "hello";
}
}
注解中的hasAuthority是一个方法,在进行判断的时候根据注解中传入的参数进行方法来进行判断
我们需要对UserDetails中完善授权信息部分:
在实现UserDetails的实现类中由方法getAuthorities()来返回控制权限的信息
public class userdatails implements UserDetails{
private List<String> primissions;
@JSONField(serialize=false)
private List<