image.png :::warning 当用户携带token 请求资源服务器的资源时,Spring Security 拦截token,进行token 和 userdetails 匹配过程,把无状态的token 转化成具体用户 :::

① Filter 拦截请求进行鉴权

:::warning BearerTokenAuthenticationFilter 拦截所有资源服务器的请求,

  • 解析 header 或者 参数中的 access_token 字段
  • 根据access_token 构造出来 BearerTokenAuthenticationToken 认证对象 ::: image.png

    ② 匹配自省鉴权处理器

    image.png

    ③ 调用自省拦截器实现处理

    :::warning

  • PigRedisOAuth2AuthorizationService 通过token value 查询 认证中心下发令牌时 存储的用户认证信息

  • 根据用户认证信息 再次调用 PigUserDetailsService 查询数据库中的最新数据

    1. 避免 redis 存储旧数据,实现权限实时更新

    ::: image.png

    ④ 接口进行权限判断

    :::warning 如下代码上进行 hasPermission 鉴权操作会调用 PermissionService.hasPermission 进行权限判断� :::

    1. @GetMapping("/export")
    2. @PreAuthorize("@pms.hasPermission('sys_user_import_export')")
    3. public List<UserExcelVO> export(UserDTO userDTO) {
    4. }

    pig 校验token (鉴权)详解 ⭐️ - 图5

⑤ PIG 数据库权限模型

:::warning

  • 用户 1 角色N
  • 角色 1 菜单(权限)N :::

image.png

❤ 问题咨询

手势点击蓝字求关注简约风动态引导关注__2022-09-07+23_18_38.gif