1
<c:set var="userProfile"><sec:authentication property="principal" /></c:set>

春のセキュリティに移植しているレガシーセキュリティシステムがあります。この場合、すべてのレガシーコードが期待するものである変数にユーザープリンシパルを単純に格納したいと思います。

現状では、変数userProfileにはprincipal.toString()が含まれています。

これはおそらくとにかくコントローラーに移動するのが最善ですが、興味深いことに、jspページでこれを実現する簡単な方法はありますか?

4

1 に答える 1

0

本文内で値を設定する場合の問題<c:set>は、それが常に文字列であるということです(本文の内容を文字列として評価します)。属性を使用する場合value、結果は評価された値のタイプになります。

<c:set var="userProfile" value="${...}" />

ただし、上記は、評価する「公開」されたものがある場合にのみ可能です。

<sec:authentication>タグはSpringSecurityのtaglibsの一部だと思いますか?その場合、それを使用している方法は、文字列の強制を引き起こしています(ではありません<c:set>)。

タグは、プロパティ値を出力ストリームに(文字列として)書き込むか、プロパティを変数として「公開」することができます。後者の場合、これはあなたが必要とすることをするはずです:

<sec:authentication property="principal" var="userProfile" />
于 2012-12-27T16:35:30.620 に答える