我们在公司使用访问管理器,访问管理器验证用户并在 http 标头中向我们发送有关用户的信息。在我的 JSF 应用程序中,我在会话开始时需要用户名,并使用此用户名从我的数据库中确定用户角色并在页面上隐藏一些组件。当我必须使用用户名信息和机制时。会话监听器,相位监听器?
至今;
我创建了一个 sessionScoped managedbean UserData,我尝试在 afterPhase 之后设置这个托管 bean phaseListener
@Override
public void beforePhase(PhaseEvent event) {
}
@Override
public void afterPhase(PhaseEvent event) {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
accessManagerUser.setUserName((String) request
.getHeader("LOGINNAME"));*/
}
但是在这种情况下,当一个请求完成到页面时,这个函数运行,我希望一个函数在所有内容之前运行一次并设置 SessionScopeManaged Bean 的用户名。
我试图实现这一目标。
- 当请求到来时从标头中读取并获取用户名。
- 使用此用户名询问数据库并获取用户的角色。
- 将此角色存储在 SessionScoped ManagedBean 中。
- 使用此角色直到会话结束。