我有一个Primefaces应用程序,通过在Tomcat上运行的JAAS使用身份验证/授权。用户角色和安全文件夹在web.xml中定义。我的问题是,我需要在登录时更改用户角色。基本上,我需要当用户点击按钮添加他的管理员角色时让他看到/ admin文件夹中的页面。我找了很长时间才找到解决方案,但没有成功。我只能看到记录的用户名并检查,如果他有这个代码的角色:
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getUserPrincipal();
request.isUserInRole("admin");
我找到了一个答案,这个代码应该有效,但我只得到null主题:
Subject.getSubject(AccessController.getContext());
是否可以更改用户角色而无需再次登录,如果是,我该怎么办?
答案 0 :(得分:0)
我用自动注销/登录用户修复了它:
。Request()方法注销(); getRequest()。login(userName,newPassword);