0

私はTomcat6.0.35で実行されているSpringMVCアプリケーションを持っています。すべてのページはSpringセキュリティによって保護されており、テスターに​​よるログインシミュレーション用に特定のページを許可したいと思います。このページは「preinicio」と呼ばれます。xml構成ファイルの関連部分は次のとおりです。

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>gestion_tramite_gfhl</display-name>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:properties/gestion_tramite_gfhl/log4j.properties</param-value>
</context-param>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/context/spring-base.xml </param-value>
</context-param>
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>gestion_tramite_gfhl</param-value>
</context-param>
<!-- Define the basename for a resource bundle for I18N -->
<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>messages</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!--<filter>
    <filter-name>autoLoginFilter</filter-name>
    <filter-class>gob.osinergmin.common.filter.AutoLoginFilter</filter-class>
    <init-param>
        <param-name>checkClientIP</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>checkDate</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>invalidParamPage</param-name>
        <param-value>/error/invalidAutoLogin.html</param-value>
    </init-param>
</filter>-->
<!--<filter>
    <filter-name>UserOnSessionFilter</filter-name>
    <filter-class>gob.osinergmin.gestion_tramite_gfhl.controller.filter.UserOnSessionFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UserOnSessionFilter</filter-name>
    <url-pattern>/pages/*</url-pattern>
</filter-mapping>-->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<!--filter-mapping>
    <filter-name>autoLoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping-->
<!--    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>-->
<!--    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/pages/*</url-pattern>
</filter-mapping>    -->
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>        
<!--    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/j_spring_security_logout</url-pattern>
</filter-mapping>    -->
<!--    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/pages/inicio</url-pattern>
</filter-mapping>      -->
<!-- Handles all requests into the application -->
<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/context/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/pages/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
    <error-code>500</error-code>
    <location>/error/error.jsp</location>
</error-page>
<error-page>
    <error-code>400</error-code>
    <location>/error/error.jsp</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/error/403.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
</error-page>

spring-security.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <security:http auto-config='false' entry-point-ref="authenticationProcessingFilterEntryPoint" use-expressions="true">        
    <security:intercept-url pattern="/pages/public/**" access="permitAll" />
    <security:intercept-url pattern="/pages/login.jsp" access="permitAll" />
    <!--*LOOK THIS LINE BELOW*-->
    <security:intercept-url pattern="/pages/preinicio" access="permitAll" />  
    <security:intercept-url pattern="/stylesheets/**" access="permitAll" />
    <security:intercept-url pattern="/javascript/**" access="permitAll" />
    <security:intercept-url pattern="/images/**" access="permitAll" />
    <security:intercept-url pattern="/pages/**" access="hasRole('ROLE_USER')" />
    <security:intercept-url pattern="/**" access="permitAll" />
    <security:custom-filter position="FORM_LOGIN_FILTER" ref="customAuthenticationFilter"/>
    <security:logout success-handler-ref="logoutHandler" />
    </security:http>

問題は、Firefoxでアプリケーションを実行し、URL「http:// localhost:8086 / myApplicationContext / pages / preinicio」にアクセスしようとすると、404ページが表示され、Firebugで次のエラーが発生することです。

NetworkError:404見つかりません-http://localhost:8086/hidrovirtual/pages/preinicio"

スプリングセキュリティなしでこれをテストすると、すべてが正常に機能するため、ページとすべてのリソースは正しいパスにあります。

誰かが私を助けてくれたら幸いです。私はこの問題に何時間も費やしました。ありがとうございました。

4

1 に答える 1

0

jsp に直接アクセスしようとしましたか。

precinio ページのインターセプト URL を次のように変更します

<intercept-url pattern="/pages/preinicio.jsp" access="permitAll"/>

URLを次のように変更します

http://localhost:8086/hidrovirtual/pages/preinicio.jsp
于 2012-12-28T17:30:37.957 に答える