【发布时间】:2011-08-08 20:53:56
【问题描述】:
对于我们当前的项目,我们正在集成 JSF 和 Spring 框架。我想使用 Spring Security 来处理身份验证和授权。到目前为止,我已经实现了一个自定义的PasswordEncoder 和AccessDecisionVoter,它们工作正常。现在我正在尝试使用 @Secured 注释(以及其他)来保护方法,但我无法让它像我期望的那样工作。
似乎@Secured 注释仅适用于直接从 JSF 层调用的 bean 方法。这是一个简化的示例:
@Named("foobarBean")
@Scope("access")
public class FoobarBean
{
@Secured("PERMISSION_TWO")
public void dummy()
{
}
@Secured("PERMISSION_ONE")
public String save()
{
dummy();
}
}
从 JSF 层调用方法 save(),如下所示:
<h:commandButton id="save" action="#{foobarBean.save}" />
然后我们的AccessDecisionVoter 被要求对 PERMISSION_ONE 进行投票,但不对 PERMISSION_TWO 进行投票。这是按设计工作(我希望不是)还是我做错了什么(可能是什么?)。
我会发布更多代码或配置,但我不确定哪一部分是相关的,我不想让这篇文章变得混乱。
【问题讨论】:
标签: java spring jsf spring-security