Java JSF应用程序,使用JAAS登录用户的动态角色
我有一个Primefaces应用程序,通过运行在Tomcat上的JAAS使用身份验证/授权。用户角色和安全文件夹在web.xml中定义。我的问题是,我需要在用户登录时更改用户角色。基本上,我需要当用户点击按钮,向他添加一个管理员角色,让他看到/admin文件夹中的页面。我花了很长时间寻找解决办法,但没有成功。我只能查看记录的用户名,并检查他是否具有此代码规定的角色:Java JSF应用程序,使用JAAS登录用户的动态角色,java,dynamic,roles,jaas,subject,Java,Dynamic,Roles,Jaas,Subject,我有一个Primefaces应用程序,通过运行在Tomcat上的JAAS使用身份验证/授权。用户角色和安全文件夹在web.xml中定义。我的问题是,我需要在用户登录时更改用户角色。基本上,我需要当用户点击按钮,向他添加一个管理员角色,让他看到/admin文件夹中的页面。我花了很长时间寻找解决办法,但没有成功。我只能查看记录的用户名,并检查他是否具有此代码规定的角色: HttpServletRequest request = (HttpServletRequest)FacesContext.get
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getUserPrincipal();
request.isUserInRole("admin");
我找到了一个答案,这段代码应该可以工作,但我只得到空主题:
Subject.getSubject(AccessController.getContext());
是否可以在无需再次登录的情况下更改用户角色,如果可以,我如何执行此操作?我通过自动注销/登录用户解决了此问题: getRequest().logout();
getRequest().login(用户名、新密码) 我通过自动注销/登录用户修复了它: getRequest().logout(); getRequest().login(用户名、新密码)