【问题标题】:Accessing Shiro principal collection data from thymleaf从 thymeleaf 访问 Shiro 主体集合数据
【发布时间】:2023-03-13 12:33:01
【问题描述】:

在 Spring Boot 应用程序中使用 Shiro spring boot starter 1.4.0,但不知道如何将 shiro principalCollection 数据提取到我的 thymeleaf 模板中以用于其他表达式等...

我在 shiro 中存储了一些轻量级用户数据,并希望使用当前用户的名字和上次登录时间显示自定义消息

例如:

<p th:text="#{welcome.lastlogin.message(${???.firstName},${???.lastLoginTime})}">..Hello, user, how are you today?..</p>

我确实转储了会话属性以查看 shiro 将主体存储为什么,我在会话中看到了这一点:

org.apache.shiro.subject.support.DefaultSubjectContext_PRINCIPALS_SESSION_KEY = john.doe@somewhere.com,{userID=1,firstName=John, lastName=Doe, loginAttempts=0, lastLoginTime=Mon Jan 22 09:30:47美国东部标准时间 2018}

我的代码使用 HashMap 并将其添加到主体...

这可能吗?

编辑:我想另一种选择是根本不为此目的使用 shiro principalCollection,而是将我自己的对象放在会话中并从 thymeleaf 中使用它。

【问题讨论】:

    标签: thymeleaf shiro


    【解决方案1】:

    看看thymeleaf-extras-shiro,它可能完全符合您的要求。否则,我猜你需要使用principalCollection.getPrimaryPrincipal()

    【讨论】:

    • 嗨,布赖恩...感谢您提供的信息。我已经在使用那个库,效果很好。但我想我遇到的问题是如何将 taglib 值注入到其他各种百里香表达式和片段中?例如,将 shiro:principal 作为参数注入到消息密钥查找中?
    • 我不确定那个,你可能想联系作者。在紧要关头,您始终可以将对象添加到 Thymeleaf 上下文。
    • 谢谢布赖恩..这就是我所做的。我拿出我的 shiro 主体并使用主体集合中的一些条目(用户 ID、登录时间、尝试等)并创建了我自己的会话对象,其中包含轻量级用户数据,如名字、电子邮件等......我将其添加到会话中并在thymeleaf 使用 $session)
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多