1

以下は正しく機能します:

<sec:authorize access="canViewUser(AMIT)">
    //SOMETHING TO BE SECURED
</sec:authorize>

しかし、私は次のようなことをしたいと思います:

<sec:authorize access="canViewUser(${userId})">
    //SOMETHING TO BE SECURED
</sec:authorize>

しかし、SpringセキュリティタグはELをサポートしていないようで、これによりエラーが発生します。

TLDまたはタグファイルの属性ディレクティブによると、属性アクセスは式を受け入れません

これらのタグにページスコープ属性を渡すことができる回避策はありますか?スクリプトレットソリューションでさえ、最後の手段と見なすことができます。

また、TLDは式を受け入れないとどこに言及していますか?TLDファイルで春のセキュリティタグを確認しましたが、どこにもこのことを示していないようです。

4

1 に答える 1

0

次の行を除いて、元のSpringSecurityTLDファイルとほぼ同じオプションでカスタムTLDファイルを作成する必要がありました。

<attribute>
            <name>access</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.lang.String</type>
            <description>
                A Spring-EL expression which is supported by the WebSecurityExpressionHandler
                in the application context. The latter will be used to evaluate the expression.
            </description>
</attribute>

これは、元のTLDの属性「access」の説明を置き換えます。url属性も他の値に変更します。このTLDは、WEB-INFの下に配置し、jsp内で使用しました。

うまくいけば、この機能は将来のバージョンのSpringセキュリティにデフォルトで存在するでしょう。

于 2012-05-12T14:50:13.223 に答える