我想将xml文件中分配的属性值传递给Java中的Spring表达式(SpEL)。你能指出我如何实现这一目标吗?为了说清楚,我提供了下面的例子。Spring安全性的SpEL:将值从XML传递到基于Java的SpEL配置
的example.xml文件:
<beans>
<bean id="user" class="x.y.User">
<property name="name" value="A"/>
<property name="userId" value="33"/>
<bean id="customer" class="x.y.Customer">
<property name="name" value="B"/>
<property name="customerId" value="33"/>
</bean>
</beans>
记住,我有 '用户' 和 '客户' 的模型类。
我想要通过使用Pre-Authorize注释和Spring表达式以下面的方式来保护名为'edit'的方法。
@PreAuthorize("(#user.userId == #customer.customerId)")
public Boolean edit(User user, Customer custmer) {
return true;
}
的问题是,我怎么可以通过帐户及客户ID值从“文件的example.xml对上述表达两个值进行比较,然后确保‘编辑’的方法?
注:我不想使用许可评估,请点我,如果有可能做到这一点,而不考虑允许评估您的支持与合作,将大幅升值!
对于让我回复您的答案感到抱歉,我不在一段时间。非常感谢详细的解释和指出@表达式来引用bean。这真是一个好点,我在使用@引用bean之前没有看到。它很有趣,我会检查它。但我想澄清一件事,如果用户标识和客户标识相同,则不允许使用“编辑”方法,而不是当用户标识为33时。我将很快发布结果。 – eyasu
它不起作用。如果userBean的userId和customerBean的customerId相等,则允许'edit'方法。根据您的建议,应该按照以下方式编写:@PreAuthorize(“@ userBean.userId == @ customerBean.customerId”) 公共布尔编辑(用户用户,客户定制者){ return true; }但它返回以下错误:java.lang.IllegalArgumentException:无法评估表达式'(@ userBean.userId == @ customerBean.customerId)' – eyasu
请指定何时准确地允许访问,何时不允许访问。你现在的例子并不清楚你是否想要引用方法参数,或者如果你想引用bean。 –