用户每次访问微服务的时候,先去oauth2.0服务登录,登录后再访问微服务网关,微服务网关将请求转发给其他微服务处理。这是前一篇的Oauth2 认证
基本的数据库表
user, role, user_role, menu, role_menu
1 角色权限加载
我们上一节中生成jwt ,第二部分通过Base64解密后:带着权限
原来是在user_oauth微服务中UserDetailServiceImpl
中写死的。
所以我们可以修改这里面的代码设置权限。
2 角色权限控制
2.1 被调用的工程中,开启授权
被调用的工程中,开启授权。如hms_user_service工程的ResourceServerConfig
中
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
2.2 controller方法上添加@PreAuthorize
如hms_user_service工程的com.wang.controller userList方法
@GetMapping("userList")
@PreAuthorize("hasAnyAuthority('user_list')")
public Result<List<User>> userList() {
List<User> userList = userService.findAll();
Result<List<User>> result = Result.success("查询成功", userList);
return result;
}
2.3 修改UserDetailServiceImpl
通过数据库查询permissions