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