<c:set var="userProfile"><sec:authentication property="principal" /></c:set>
我有一个遗留的安全系统,我正在将其移植到弹簧安全中。在这种情况下,我想简单地将用户主体存储在一个变量中,这是所有遗留代码所期望的。
就目前而言,变量userProfile包含principal.toString()。
无论如何,这可能最好移到控制器上,但出于兴趣,有没有一种简单的方法可以在 jsp 页面中实现这一点?
正文中设置带有<c:set>
的值的问题在于它始终是一个字符串(将正文内容评估为字符串)。如果使用 value
属性,则结果为评估值的类型:
<c:set var="userProfile" value="${...}" />
但只有当你有"暴露"的东西要评估时,上述情况才有可能。
我假设<sec:authentication>
标签是Spring Security标签库的一部分?如果是这种情况,您使用它的方式会导致字符串强制(而不是<c:set>
)。
标记可以将属性值写入输出流(作为字符串),也可以将属性"公开"为变量。在后一种情况下,这应该可以满足您的需求:
<sec:authentication property="principal" var="userProfile" />