Java JSF 应用程序,使用 JAAS 登录用户的动态角色

标签 java dynamic roles jaas subject

我有一个 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/

相关文章:

java - 单例在不同线程中的使用

java - @Transactional propogation_new 被父事务回滚

ruby-on-rails-3 - Ruby on rails、cancan 和默认角色分配

java - 在 Java 中使用 BufferedImage 创建图像

java - 软件渲染: Why aren't my vertices being transformed?

c++ - 掷硬币游戏 : Optimization problem

sql - ASP.NET Identity Core - 角色相关查询太多

c# - 具有 Windows 身份验证的 ASP.NET Core 2.1 自定义 RoleProvider

random - 如何在随机时间内启动 DAG

c++ - 二维动态数组C++显示问题