我有一个Spring引导(1.5.3)oauth2应用程序,它确保了URL和方法的安全。 @PreAuthorize(“hasRole(‘ROLE_NAME’)”)春季启动安全OAuth2 +自定义权限评估
现在我想添加自定义PermissionEvaluator,这样我可以用 @PreAuthorize安全法(“调用hasPermission(#ID:方法的安全性是通过目前的工作,'typeName','permissionName')“)。
我通过扩展GlobalMethodSecurityConfiguration启用此功能:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, mode =
AdviceMode.ASPECTJ, jsr250Enabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration
{
@Autowired
private MatterRepository matterRepository;
@Autowired
private MatterTeamMemberRepository matterTeamMemberRepository;
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
Map<String, Permission> permissionsMap = new HashMap<>();
permissionsMap.put(ReadMatterPermission.class.getSimpleName(),
new ReadMatterPermission(matterRepository, matterTeamMemberRepository));
OAuth2MethodSecurityExpressionHandler handler = new
OAuth2MethodSecurityExpressionHandler();
handler.setPermissionEvaluator(new
EntityPermissionEvaluator(permissionsMap));
return handler;
}
}
注:PermissionEvaluator类不再赘述。
我遇到的问题是hasPermission有时会被调用 - 大多数情况下它不会被调用。我怀疑这是事做:
*Auto-configure an expression handler for method-level security (if the user
* already has
* {@code @EnableGlobalMethodSecurity}).
o.s.b.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
我的配置被处理之前创建OAuth2MethodSecurityExpressionHandler的一个实例。
有没有人成功将PermissionEvaluator注入到spring引导oauth2应用程序中?
谢谢。
我禁用了oauth2自动配置没有任何区别,所以消除了这一点。 – Chappers1975