Spring security Freemarker Session为空或缺失



我试图在Freemarker模板中使用Session对象:

<#assign
known = Session.SPRING_SECURITY_CONTEXT??
>
<#if known>
<#assign
user = Session.SPRING_SECURITY_CONTEXT.authentication.principal
name = user.getUsername()
isAdmin = user.isAdmin()
currentUserId = user.getId()
>
<#else>
<#assign
name = "unknown"
isAdmin = false
currentUserId = -1
>
</#if>

但是收到错误:

freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> Session  [in template "parts/security.ftlh" at line 2, column 9]

如何在Freemarker中使用Session对象?是否存在另一种方法来隐藏一些基于用户角色的HTML元素?

添加spring.freemarker.expose-session-attributes=trueapplication.properties

并将代码修改为:

<#assign
known = SPRING_SECURITY_CONTEXT??
>

<#if known>
<#assign
user = SPRING_SECURITY_CONTEXT.authentication.principal
name = user.getUsername()
isAdmin = user.isAdmin()
currentUserId = user.getId()
>
<#else>
<#assign
name = "unknown"
isAdmin = false
currentUserId = -1
>
</#if>

最新更新