From 1cec497a5031d03db448a953350032e30b45587d Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Fri, 19 May 2017 21:25:50 -0500 Subject: [PATCH] Add method chaining for AuthorizeExchangeBuilder Fixes gh-4345 --- .../web/server/AuthorizeExchangeBuilder.java | 23 ++++++++++--------- .../src/main/java/sample/SecurityConfig.java | 10 ++++---- .../src/main/java/sample/SecurityConfig.java | 10 ++++---- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/config/src/main/java/org/springframework/security/config/web/server/AuthorizeExchangeBuilder.java b/config/src/main/java/org/springframework/security/config/web/server/AuthorizeExchangeBuilder.java index 9f4baf4d10..12a787d89c 100644 --- a/config/src/main/java/org/springframework/security/config/web/server/AuthorizeExchangeBuilder.java +++ b/config/src/main/java/org/springframework/security/config/web/server/AuthorizeExchangeBuilder.java @@ -63,29 +63,30 @@ public class AuthorizeExchangeBuilder extends AbstractServerWebExchangeMatcherRe public final class Access { - public void permitAll() { - access( (a,e) -> Mono.just(new AuthorizationDecision(true))); + public AuthorizeExchangeBuilder permitAll() { + return access( (a,e) -> Mono.just(new AuthorizationDecision(true))); } - public void denyAll() { - access( (a,e) -> Mono.just(new AuthorizationDecision(false))); + public AuthorizeExchangeBuilder denyAll() { + return access( (a,e) -> Mono.just(new AuthorizationDecision(false))); } - public void hasRole(String role) { - access(AuthorityAuthorizationManager.hasRole(role)); + public AuthorizeExchangeBuilder hasRole(String role) { + return access(AuthorityAuthorizationManager.hasRole(role)); } - public void hasAuthority(String authority) { - access(AuthorityAuthorizationManager.hasAuthority(authority)); + public AuthorizeExchangeBuilder hasAuthority(String authority) { + return access(AuthorityAuthorizationManager.hasAuthority(authority)); } - public void authenticated() { - access(AuthenticatedAuthorizationManager.authenticated()); + public AuthorizeExchangeBuilder authenticated() { + return access(AuthenticatedAuthorizationManager.authenticated()); } - public void access(ReactiveAuthorizationManager manager) { + public AuthorizeExchangeBuilder access(ReactiveAuthorizationManager manager) { managerBldr.add(matcher, manager); matcher = null; + return AuthorizeExchangeBuilder.this; } } } diff --git a/samples/javaconfig/hellowebflux/src/main/java/sample/SecurityConfig.java b/samples/javaconfig/hellowebflux/src/main/java/sample/SecurityConfig.java index d848ed222d..6d45a1cde2 100644 --- a/samples/javaconfig/hellowebflux/src/main/java/sample/SecurityConfig.java +++ b/samples/javaconfig/hellowebflux/src/main/java/sample/SecurityConfig.java @@ -21,7 +21,6 @@ package sample; import org.springframework.context.annotation.Bean; import org.springframework.security.authorization.AuthorizationDecision; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; -import org.springframework.security.config.web.server.AuthorizeExchangeBuilder; import org.springframework.security.config.web.server.HttpSecurity; import org.springframework.security.core.Authentication; import org.springframework.security.web.server.authorization.AuthorizationContext; @@ -39,10 +38,11 @@ public class SecurityConfig { WebFilter springSecurityFilterChain(HttpSecurity http) throws Exception { http.httpBasic(); - AuthorizeExchangeBuilder authorize = http.authorizeExchange(); - authorize.antMatchers("/admin/**").hasRole("ADMIN"); - authorize.antMatchers("/users/{user}/**").access(this::currentUserMatchesPath); - authorize.anyExchange().authenticated(); + http.authorizeExchange() + .antMatchers("/admin/**").hasRole("ADMIN") + .antMatchers("/users/{user}/**").access(this::currentUserMatchesPath) + .anyExchange().authenticated(); + return http.build(); } diff --git a/samples/javaconfig/hellowebfluxfn/src/main/java/sample/SecurityConfig.java b/samples/javaconfig/hellowebfluxfn/src/main/java/sample/SecurityConfig.java index d848ed222d..6d45a1cde2 100644 --- a/samples/javaconfig/hellowebfluxfn/src/main/java/sample/SecurityConfig.java +++ b/samples/javaconfig/hellowebfluxfn/src/main/java/sample/SecurityConfig.java @@ -21,7 +21,6 @@ package sample; import org.springframework.context.annotation.Bean; import org.springframework.security.authorization.AuthorizationDecision; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; -import org.springframework.security.config.web.server.AuthorizeExchangeBuilder; import org.springframework.security.config.web.server.HttpSecurity; import org.springframework.security.core.Authentication; import org.springframework.security.web.server.authorization.AuthorizationContext; @@ -39,10 +38,11 @@ public class SecurityConfig { WebFilter springSecurityFilterChain(HttpSecurity http) throws Exception { http.httpBasic(); - AuthorizeExchangeBuilder authorize = http.authorizeExchange(); - authorize.antMatchers("/admin/**").hasRole("ADMIN"); - authorize.antMatchers("/users/{user}/**").access(this::currentUserMatchesPath); - authorize.anyExchange().authenticated(); + http.authorizeExchange() + .antMatchers("/admin/**").hasRole("ADMIN") + .antMatchers("/users/{user}/**").access(this::currentUserMatchesPath) + .anyExchange().authenticated(); + return http.build(); }