Skip to content

Simplify adding AuthorizationAdvisors to AuthorizationAdvisorProxyFactory #15497

Closed
@jzheaux

Description

@jzheaux

To add an advisor to AuthorizationAdvisorProxyFactory is simple:

List<AuthorizationAdvisor> advisors = ...
AuthorizationAdvisorProxyFactory proxyFactory = AuthorizationAdvisorProxyFactory.withDefaults();
proxyFactory.setAdvisors(advisors);

However, it's not great that all advisors need to be specified. Given that withDefaults prepares a default set of advisors already, it would be nice to be able to augment it instead of replace.

For example, addAdvisors may be valuable like so:

List<AuthorizationAdvisor> advisors = ...
AuthorizationAdvisorProxyFactory proxyFactory = AuthorizationAdvisorProxyFactory.withDefaults();
proxyFactory.addAdvisors(advisors);
// ... or
proxyFactory.advisors((a) -> a.addAll(advisors))

Another option is to expose the default advisors via a static method:

List<AuthorizationAdvisor> advisors = AuthorizationAdvisorProxyFactory.defaultAdvisors();
advisors.add(...);
AuthorizationAdvisorProxyFactory proxyFactory = AuthorizationAdvisorProxyFactory.withDefaults();
proxyFactory.setAdvisors(advisors);

Note that mutability is necessary in this case since this allows a recursive nesting of advisors, important in the case of @AuthorizeReturnObject, for example.

Metadata

Metadata

Assignees

Labels

in: coreAn issue in spring-security-coretype: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions