Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
jsf根据cookie自动登录_Jsf_Cookies_Login_Redirectwithcookies - Fatal编程技术网

jsf根据cookie自动登录

jsf根据cookie自动登录,jsf,cookies,login,redirectwithcookies,Jsf,Cookies,Login,Redirectwithcookies,我在为JSF应用程序实现自动登录功能时遇到了一个问题,该应用程序受到基于JSP和servlet的体系结构的保护 我使用LoginBean通过构造函数方法支持jsf页面,以检查包含用户凭据的cookie是否存在,以及是否存在,从而自动打开会话并将用户重定向到主页 自动登录从未发生,用户始终保持在登录表单的前面。我应该怎么做才能让它工作呢?这里有一个应该工作的选项。一旦确定它们是有效的,您可以这样做: final ExternalContext externalContext = FacesCont

我在为JSF应用程序实现自动登录功能时遇到了一个问题,该应用程序受到基于JSP和servlet的体系结构的保护

我使用LoginBean通过构造函数方法支持jsf页面,以检查包含用户凭据的cookie是否存在,以及是否存在,从而自动打开会话并将用户重定向到主页


自动登录从未发生,用户始终保持在登录表单的前面。我应该怎么做才能让它工作呢?

这里有一个应该工作的选项。一旦确定它们是有效的,您可以这样做:

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块中处理该场景。