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

我有一个遗留安全系统,我正在移植到 Spring Security。在这种情况下,我想简单地将用户主体存储在一个变量中,这是所有遗留代码所期望的。

就目前而言,变量 userProfile 包含 principal.toString()。

无论如何,这可能最好移动到控制器,但出于兴趣,有没有一种简单的方法可以在 jsp 页面中实现这一点?

4

1 回答 1

0

在正文中设置值的问题<c:set>在于它始终是一个字符串(将正文内容评估为字符串)。如果使用该value属性,则结果是评估值的类型:

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

但只有当你有一些“暴露”的东西要评估时,上述情况才有可能。

我假设<sec:authentication>标签是Spring Security 的 taglibs 的一部分?如果是这种情况,那么您使用它的方式会导致字符串强制(而不是<c:set>)。

标签可以将属性值写入输出流(作为字符串)或将属性“公开”为变量。在后一种情况下,这应该可以满足您的需要:

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