Class SpringAccessPathChecker
- All Implemented Interfaces:
AccessPathChecker
,Serializable
It is used in combination with
RoutePathAccessChecker
to provide
path-based security to Flow
NavigationAccessControl
.
To enable it, define a
NavigationAccessControlConfigurer
bean,
configured using
NavigationAccessControlConfigurer.withRoutePathAccessChecker()
method.
@Bean
NavigationAccessControlConfigurer navigationAccessControlConfigurer() {
return new NavigationAccessControlConfigurer()
.withRoutePathAccessChecker().withLoginView(LoginView.class);
}
Custom Request Transformer
When using SpringAccessPathChecker
with Spring Security request
matchers that need to access
HttpServletRequest.getUserPrincipal()
, you may
need to create a custom
AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer
bean using
principalAwareRequestTransformer(org.springframework.security.web.access.AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer)
.
This prevents UnsupportedOperationException
s that can occur when
Spring Security request matchers attempt to access user principal
information.
@Bean
@Primary
HttpServletRequestTransformer customRequestTransformer() {
return SpringAccessPathChecker.principalAwareRequestTransformer(
new PathPatternRequestTransformer());
}
An alternative is to use wrap the single request matchers using
RequestUtil.principalAwareRequestMatcher(RequestMatcher)
.
@Bean
public SecurityFilterChain webFilterChain(HttpSecurity http) {
http.authorizeRequests(cfg -> cfg.requestMatchers(RequestUtil.principalAwareRequestMatcher(
request -> {
...
if (request.getUserPrincipal() == null) {
....;
}
...
return true;
}
));
}
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionSpringAccessPathChecker
(org.springframework.security.web.access.WebInvocationPrivilegeEvaluator evaluator) Creates a new instance that uses the givenWebInvocationPrivilegeEvaluator
to check path permissions.SpringAccessPathChecker
(org.springframework.security.web.access.WebInvocationPrivilegeEvaluator evaluator, String urlMapping) Creates a new instance that uses the givenWebInvocationPrivilegeEvaluator
to check path permissions. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Checks if the user defined by the givenPrincipal
and role checker has access to the given path.static org.springframework.security.web.access.AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer
principalAwareRequestTransformer
(org.springframework.security.web.access.AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer transformer) Provides a security-aware HTTP request transformer that applies additional processing to the transformed request usingRequestUtil.PrincipalAwareRequestWrapper
.
-
Constructor Details
-
SpringAccessPathChecker
public SpringAccessPathChecker(org.springframework.security.web.access.WebInvocationPrivilegeEvaluator evaluator) Creates a new instance that uses the givenWebInvocationPrivilegeEvaluator
to check path permissions.- Parameters:
evaluator
- evaluator to check path permissions.
-
SpringAccessPathChecker
public SpringAccessPathChecker(org.springframework.security.web.access.WebInvocationPrivilegeEvaluator evaluator, String urlMapping) Creates a new instance that uses the givenWebInvocationPrivilegeEvaluator
to check path permissions. It applies the given Vaadin servlet url mapping to the input path before delegating the check to the evaluator.- Parameters:
evaluator
- evaluator to check path permissions.urlMapping
- Vaadin servlet url mapping
-
-
Method Details
-
hasAccess
Description copied from interface:AccessPathChecker
Checks if the user defined by the givenPrincipal
and role checker has access to the given path.The
path
is relative to the Vaadin application and does not contain any container specific details such as context or servlet path.The
path
is never null and never starts with a "/" character.- Specified by:
hasAccess
in interfaceAccessPathChecker
- Parameters:
path
- the path to check access toprincipal
- the principal of the userroleChecker
- a function that can answer if a user has a given role- Returns:
true
if the user has access to the given path,false
otherwise.
-
principalAwareRequestTransformer
public static org.springframework.security.web.access.AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer principalAwareRequestTransformer(org.springframework.security.web.access.AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer transformer) Provides a security-aware HTTP request transformer that applies additional processing to the transformed request usingRequestUtil.PrincipalAwareRequestWrapper
.A custom
AuthorizationManagerWebInvocationPrivilegeEvaluator.HttpServletRequestTransformer
bean handlingHttpServletRequest.getUserPrincipal()
method should be exposed by the application whenSpringAccessPathChecker
is used in conjunction with Spring Security request matchers that requires to access that information to preventUnsupportedOperationException
s.- Parameters:
transformer
- the original HTTP request transformer to be wrapped- Returns:
- a new HTTP request transformer that wraps the transformed request with enhanced security awareness
-