我正在深化发展的web应用程序切换时丢失(JSF 2.0 +小面+ RichFaces的3.3.3 +的Oracle 10g + tomcat的6.0.26)会话从HTTPS到http(Tomcat的6.0.26)
在我的应用,还有就是没有固定1路,和其他固定(web.xml中):
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/faces/login.jsp</form-login-page>
<form-error-page>/faces/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin_Resource</web-resource-name>
<description/>
<url-pattern>/faces/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>A</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<description>Role admin</description>
<role-name>A</role-name>
</security-role>
所以,这条道路并不安全:/面/客户/ *。 当我从https TP HTTP动,我用这个函数:
FacesContext.getCurrentInstance().getExternalContext().redirect("http://url/faces/client/page.xhtml");
当我部署我的应用程序,并使用这个网址:HTTP(S):// URL/MyContext /面/ ...,所有工作得很好。当我将我的应用程序移动到ROOT上下文时,所以我使用这个URL:http(s):// url/faces /,当我从https移动到http时,我的https会话丢失,然后返回到https 。我的登录页面显示,所以我需要重新输入我的登录名和密码。
为什么我的会话丢失了?有什么不对 ?
地址:当我部署我的应用程序,这是我做的(外部服务器):
把我的战争文件到WebApp文件夹
启动我的服务器(这将解压缩我的战成文件夹,...),然后停止
删除我的战争文件
我更换根文件夹与解压缩war文件
内容的内容,并重新启动我的服务器再次
但是当我把我的战成web应用程序文件夹中的所有工作正常,然后启动服务器(就这样)。
所以,我认为这是一个背景问题。
你有什么想法吗?
如果它们是在SSL会话中生成的,tomcat会将其会话cookie标记为“安全”吗?这将阻止他们能够流入非SSL请求。 – 2011-02-17 08:15:32