我有一個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