我创建了一个名为loggedOut.jsp的新JSP文件,在我点击我的应用程序中的注销后,我希望将其定向到它。虽然我被带到登录页面但是url显示为登录到了LoginOut.jsp,而不是转到loggedOut.jsp文件。
我正在使用tomcat 7和vaadin。
如何让我的应用将我带到loggedOut.jsp?
我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Messages</display-name>
<context-param>
<description>
Vaadin production mode</description>
<param-name>productionMode</p+aram-name>
<param-value>false</param-value>
</context-param>
<servlet>
<servlet-name>MessagesApplication</servlet-name>
<servlet-class>org.vaadin.artur.icepush.ICEPushServlet</servlet-class>
<init-param>
<description>
Vaadin application class to start</description>
<param-name>application</param-name>
<param-value>com.entropix.msgapp.main.MsgApplication</param-value>
</init-param>
<init-param>
<description>
Application widgetset</description>
<param-name>widgetset</param-name>
<param-value>com.entropix.msgapp.main.widgetset.MessagesWidgetset</param-value>
</init-param>
</servlet>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/login.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/loginFailed.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/loggedOut.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MessagesApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>LoginConstraint</display-name>
<web-resource-collection>
<web-resource-name>MessagesUser</web-resource-name>
<description>Messages Application Authenticated User</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>messages-user</role-name>
</auth-constraint>
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE -->
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<description>Messages User</description>
<role-name>messages-user</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginFailed.jsp</form-error-page>
</form-login-config>
</login-config>
答案 0 :(得分:3)
如果用户未经过身份验证,您可能已将webapp(或webapp中的过滤器)配置为重定向到所有(或大量)“受保护”URL的登录页面。
确保loggedOut.jsp不是需要进行身份验证才能访问的“受保护”URL(或网址模式)的一部分。这通常在web.xml文件中配置,但您是唯一知道应用程序如何工作的人。
编辑:现在你已经向我们展示了web.xml文件,看看里面。您正在使用url模式/*
(这意味着Webapp的每个URL)定义一个资源集合,该模式需要在角色messages-user
中进行访问。这意味着要访问webapp的每个URL,您必须通过此身份验证进行身份验证并获得messages-user角色。因此,只要您注销,就会将用户重定向到logedOut.jsp。但由于需要对URL进行身份验证才能访问,因此会显示登录页面。
以下是您的教程:http://docs.oracle.com/javaee/5/tutorial/doc/bncas.html