【发布时间】:2015-10-20 12:43:56
【问题描述】:
我在 JSF2 项目中使用 Shiro 1.2.3。我找不到在没有注销的情况下更新已验证主题的主体的方法。当登录用户想要更新他/她的个人资料信息时,我需要这个。我将userBean 存储为主体,它应该与配置文件信息一起更新。以编程方式登录可能是一种解决方案,但这次需要用户的密码才能创建令牌。
【问题讨论】:
-
为什么要更改用户主体。它是用于他在登录后被允许的所有授权和身份验证的密钥。通常 Principal 是用户的用户 ID。如果您在两者之间进行更改,则可能会显示不一致的行为。此外,根据标准主体是一个用户 ID,不应更改,以便您可以在历史数据中跟踪它。如果您需要更改某些内容,则可能是用户的物理名称。
-
@dev 您可以将任何对象设置为主体(甚至多个)。然而,在性能方面,建议只存储一个唯一的 id。在我的应用程序中,我将一个轻量级 User 类(具有 userId、username、email、firstname 和 lastname 属性)设置为主体,因为我经常使用
<shiro:principal/>标签显示每个字段。
标签: security authentication jsf-2 shiro