Authentication 如何在JSF中处理动态角色或用户名更改?

Authentication 如何在JSF中处理动态角色或用户名更改?,authentication,jsf,ejb-3.0,ejb,Authentication,Jsf,Ejb 3.0,Ejb,我有一个JSF应用程序运行在GlassFish2.1上,带有EJB3后端。对于身份验证,我使用自定义域。用户使用注册时指定的电子邮件地址和密码进行身份验证。一切都很顺利 现在我有两个相关的问题: 1) 用户可以编辑他的个人资料,当然,他也可以更改他的电子邮件地址。不幸的是,当我使用ExternalContext.getUserPrincipal().getName()基于当前用户的身份执行操作时,我将收到用户在登录时使用的上一个电子邮件地址。目前,我通过在用户更改电子邮件地址后强制用户重新验证来

我有一个JSF应用程序运行在GlassFish2.1上,带有EJB3后端。对于身份验证,我使用自定义域。用户使用注册时指定的电子邮件地址和密码进行身份验证。一切都很顺利

现在我有两个相关的问题:

1) 用户可以编辑他的个人资料,当然,他也可以更改他的电子邮件地址。不幸的是,当我使用ExternalContext.getUserPrincipal().getName()基于当前用户的身份执行操作时,我将收到用户在登录时使用的上一个电子邮件地址。目前,我通过在用户更改电子邮件地址后强制用户重新验证来处理此问题,但还有其他更合适的可能性吗


2) 用户角色也一样。例如,我有用户角色成员和高级成员。会员可在其本届会议期间成为高级会员。不幸的是,角色似乎只在登录时确定。JSF和EJB是否有可能识别新的用户角色而不需要用户重新验证?

考虑与JSF一起使用。在那里,您可以更改已登录用户的凭据,而无需重新登录。

JEE security model会在您需要一些动态功能时立即生效。也许这个问题有助于“JavaEE服务器上的动态角色”。我认为第二点是不可能的。我已经创建了一个支持这个问题的程序。希望这可以在未来版本的JavaEE中得到解决。1)您是否有任何指向Seam文档的链接来描述这一点?2) Seam会为我的应用程序引入一个全新的授权/认证框架吗?还是会在JEE授权/认证之上提供动态功能?它使用JEE之上的功能。没有任何文档说明您可以更改登录用户的凭据。然而,这里有一些关于身份验证的文档:安全章节是一个很好的开始:当涉及到关于角色的第二个问题时,很可能需要重新登录,尽管API可能支持rasing事件更改用户的角色。如果可能的话,我也不会感到惊讶。