jsf根据cookie自动登录
我在为JSF应用程序实现自动登录功能时遇到了一个问题,该应用程序受到基于JSP和servlet的体系结构的保护 我使用LoginBean通过构造函数方法支持jsf页面,以检查包含用户凭据的cookie是否存在,以及是否存在,从而自动打开会话并将用户重定向到主页jsf根据cookie自动登录,jsf,cookies,login,redirectwithcookies,Jsf,Cookies,Login,Redirectwithcookies,我在为JSF应用程序实现自动登录功能时遇到了一个问题,该应用程序受到基于JSP和servlet的体系结构的保护 我使用LoginBean通过构造函数方法支持jsf页面,以检查包含用户凭据的cookie是否存在,以及是否存在,从而自动打开会话并将用户重定向到主页 自动登录从未发生,用户始终保持在登录表单的前面。我应该怎么做才能让它工作呢?这里有一个应该工作的选项。一旦确定它们是有效的,您可以这样做: final ExternalContext externalContext = FacesCont
自动登录从未发生,用户始终保持在登录表单的前面。我应该怎么做才能让它工作呢?这里有一个应该工作的选项。一旦确定它们是有效的,您可以这样做:
final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
try {
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
if (!response.isCommitted()) {
externalContext.redirect("loggedin.xhtml");
}
} catch (IOException ex) {
// log etc.
}
当您说“自动登录从未发生”时,您的意思是没有调用构造函数吗?虽然调用了构造函数,但在未提交表单的情况下,无法导航到“loggedin”页面。我试图实现的是,如果存在cookie,用户将自动重定向到“登录”页面。谢谢你的建议,Dave。我应该把这段代码放在哪里?在托管bean或servlet过滤器内部?您可以在确定bean的构造函数具有有效cookie后立即将其放入bean的构造函数中。谢谢Dave。这似乎有效,但我有一个问题:在response.isCommitted()条件下执行重定向与根本不检查响应是否已提交有什么区别?如果在响应已提交后尝试重定向,会出现异常。如果在应用程序上下文中出现错误,您可以在catch块中处理该场景。