私はSpringセキュリティ4.2.3を実装しました。 JSF-2.2 Webアプリケーションでは、これまでのところうまく動作します。今私は春のセキュリティのauthorizeタグからjsf beanメソッドにアクセスする際に問題があります。Springセキュリティの認可タグで管理されたJSF Beanにアクセス
これは私がアイテムデータに基づいて、いくつかの行のアクセスを拒否する必要が私のXHTMLデータテーブルである:
<p:dataTable var="item" value="#{itemService.items}">
<p:column headerText="Id">
<h:outputText value="#{item.id}" />
</p:column>
<p:column headerText="Name">
<h:outputText value="#{item.name}" />
</p:column>
<p:column headerText="Security">
<sec:authorize access="#{securityService.checkAccessByItemId(item.id)}">
<h:outputLabel value="#{helloWorld.secure}"/>
</sec:authorize>
</p:column>
</p:dataTable>
そして、ここだけのテストのための私の豆:
@ManagedBean(name="securityService")
@RequestScoped
public class SecurityService {
public boolean checkAccessByItemId(int id) {
if(id==5) {
return false;
} else {
return true;
}
}
}
ここに私のtaglib。 XML:私はこの例外を取得しています
<facelet-taglib>
<namespace>http://www.springframework.org/security/tags</namespace>
<tag>
<tag-name>authorize</tag-name>
<handler class>org.springframework.faces.security.FaceletsAuthorizeTagHandler</handler-class>
</tag>
</facelet-taglib>
:
org.springframework.expression.spel.SpelParseException: Expression [#{securityService.checkAccessByItemId(item.id)}] @1: EL1043E: Unexpected token. Expected 'identifier' but was 'lcurly({)'
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.raiseInternalException(InternalSpelExpressionParser.java:1006)
誰にも解決策がありますか?
Spring ELがパラメータ化されたメソッド呼び出しをサポートしているかどうかチェックしましたか? – Kukeltje
パラメータなしのメソッドを呼び出すと同じエラーが発生しました – Timster
エラーが正しく読み込まれました(そしてSpring Securityドキュメントがチェックされました!!!) ELを使用できますか?https://docs.spring.io/spring-security/site/docs/4.2.x/reference/html/taglibs.html#taglibs-authorize – Kukeltje