实现权限验证拦截器

  1. @Component
  2. public class PermissionScopeInterceptor extends BaseBffPermissionScopeHandlerInterceptorAdapter {
  3. @Override
  4. protected void assemblePermissionScopeData(Collection<PermissionScopeData> collection) {
  5. // TODO 调用服务拼装更多的权限和数据范围定义用于验证,具体参考代码示例
  6. }
  7. @Override
  8. protected boolean validatePermissionWithoutScope(PermissionScopeData permissionScopeData) {
  9. Long userId = ClientRequestContextHolder.current().getUserId();
  10. String permissionKey = permissionScopeData.getPermissionKey();
  11. // TODO 验证用户是否有权限
  12. }
  13. }

MVC 配置拦截器

自定义实现数据范围验证器

  1. /**
  2. * 验证组织数据范围
  3. */
  4. @Component
  5. public class OrgPermissionScopeValidator implements PermissionScopeValidator {
  6. @Override
  7. public boolean validate(PermissionScopeData permissionScopeData) {
  8. Long userId = ClientRequestContextHolder.current().getUserId();
  9. // TODO 进行实际验证,具体参考代码示例
  10. return true;
  11. }
  12. }

注册自定义验证器

  1. @Configuration
  2. public class PermissionScopeConfig {
  3. @Autowired
  4. private OrgPermissionScopeValidator orgPermissionScopeValidator;
  5. @Bean
  6. protected PermissionScopeValidatorMapping permissionScopeValidatorMapping() {
  7. PermissionScopeValidatorMapping mapping = new PermissionScopeValidatorMapping();
  8. // 添加各种 scopeType 实现
  9. mapping.add(ScopeConstants.SCOPE_TYPE_ORG, orgPermissionScopeValidator);
  10. return mapping;
  11. }
  12. }