我们可以把用户的权限写在令牌的载荷里
这是一个解析完的令牌,其中的authorities就是权限
{"scope":["app"],"name":null,"id":null,"exp":1610927779,"authorities":["seckill_list","goods_list"],"jti":"0beaa6b1-ab5c-4874-a938-8fce91e86654","client_id":"changgou","username":"heima"}
这个权限不是我自己加的,而是在changgou-user-oauth中的config中有一个类UserDetailsServiceImpl
其中有个loadUserByUsername的方法,通过创建要给UserJwt完成了授权,目前原理不清楚,推测是oauth2的内部机制
在配置了Oauth2的微服务中,其配置类ResourceServerConfig有一个类注解@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
这个注解的作用是开启业务方法上的@PreAuthorize("hasAuthority('admin')")注解
@PreAuthority注解用来声明调用这个方法必须有什么权限或角色,上边这个就要求有admin权限
1
1
1
1