如何使用Spring安全性和spring安全对象的属性限制对URL的访问?

Dav*_*ave 6 spring access-control spring-security security-context principal

我正在使用Spring 5.1和Spring security 4.2.我使用XML文件配置了访问规则.我的问题是,如何根据Spring安全上下文中的属性编写拦截规则(对URL的访问控制)?也就是说,我有一个变量

productList
Run Code Online (Sandbox Code Playgroud)

在安全上下文中,类型为java.util.ArrayList.如果此列表为空或null,我想限制对URL的访问.我怎么写这个?我有

<http name="defaultSecurity" security-context-repository-ref="myContextRepository"
    auto-config="false" use-expressions="true" authentication-manager-ref="authenticationManager"
    entry-point-ref="loginUrlAuthenticationEntryPoint">
    ...
    <intercept-url pattern="/myurl" access="length(principal.productList) > 0" />
    ...
</http>
Run Code Online (Sandbox Code Playgroud)

但当然,上面

length(principal.productList) > 0   
Run Code Online (Sandbox Code Playgroud)

表达是完全错误的.有没有正确的方法来写它?

Moh*_*and 0

如果您正在寻找检查ProductList中元素的数量,这里有一个解决方法:

 <intercept-url pattern="/myurl" access="principal.productList.size() > 0" />
Run Code Online (Sandbox Code Playgroud)