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

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

问题描述:

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

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

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

Subject.getSubject(AccessController.getContext()); 

是有可能在不需要再次登录的情况下更改用户角色,如果可以,我该怎么做?

我与自动注销固定它/登录用户:

Request()方法注销(); getRequest()。login(userName,newPassword);