Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF应用程序,使用JAAS登录用户的动态角色_Java_Dynamic_Roles_Jaas_Subject - Fatal编程技术网

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

Java JSF应用程序,使用JAAS登录用户的动态角色,java,dynamic,roles,jaas,subject,Java,Dynamic,Roles,Jaas,Subject,我有一个Primefaces应用程序,通过运行在Tomcat上的JAAS使用身份验证/授权。用户角色和安全文件夹在web.xml中定义。我的问题是,我需要在用户登录时更改用户角色。基本上,我需要当用户点击按钮,向他添加一个管理员角色,让他看到/admin文件夹中的页面。我花了很长时间寻找解决办法,但没有成功。我只能查看记录的用户名,并检查他是否具有此代码规定的角色: HttpServletRequest request = (HttpServletRequest)FacesContext.get

我有一个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(用户名、新密码)

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

getRequest().logout(); getRequest().login(用户名、新密码)