我有一个 Primefaces 应用程序,通过 Tomcat 上运行的 JAAS 使用身份验证/授权。用户角色和安全文件夹在 web.xml 中定义。我的问题是,我需要在他登录时更改用户角色。基本上,当用户单击按钮添加他管理员角色时,我需要让他看到/admin 文件夹中的页面。我花了很长时间寻找解决方案,但没有成功。我只能查看记录的用户名并通过以下代码检查他是否具有角色:
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getUserPrincipal();
request.isUserInRole("admin");
我找到了一个答案,该代码应该可以工作,但我只得到空主题:
Subject.getSubject(AccessController.getContext());
是否可以更改用户角色而无需再次登录,如果可以,我该如何操作?
最佳答案
我通过自动注销/登录用户修复了这个问题:
getRequest().logout(); getRequest().login(用户名, 新密码);
关于Java JSF 应用程序,使用 JAAS 登录用户的动态角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37877079/