1

我有一个 Primefaces 应用程序,其中通过在 Tomcat 上运行的 JAAS 使用身份验证/授权。用户角色和安全文件夹在 web.xml 中定义。我的问题是,我需要在他登录时更改用户角色。基本上,当用户单击按钮添加他的管理员角色时,我需要让他看到 /admin 文件夹中的页面。我一直在寻找解决方案,但没有成功。我只能看到记录的用户名并检查他是否具有此代码的角色:

HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getUserPrincipal();
request.isUserInRole("admin");

我找到了一个答案,该代码应该可以工作,但我只得到空主题:

Subject.getSubject(AccessController.getContext());

是否可以更改用户角色而无需再次登录,如果可以,我该怎么做?

4

1 回答 1

0

我通过自动注销/登录用户来修复它:

getRequest().logout(); getRequest().login(userName, newPassword);

于 2016-06-24T13:34:01.633 回答