2013-07-08 14 views
5

Webアプリケーションのカスタムエラーページを実装したい。私は、以下の方法を使用します。Spring MVC:エラーページとプリンシパル情報

web.xmlの

<error-page> 
    <error-code>404</error-code> 
    <location>/404/</location> 
</error-page> 

春-のsecurity.xml

<http use-expressions="true"> 
    <form-login ... /> 
    <access-denied-handler error-page="/403/" /> 
    .... 
</http> 

どちらのページには、適切なコントローラによって処理されます。しかし、この場合、principalは受け入れられない、つまり現在ログインしているユーザーに関する情報を取得できないようです。

デフォルトの動作ですか、それともコードに誤りがありますか?

はありがとう

UPD#1: 私の設定:

<listener> 
    <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-service.xml 
     /WEB-INF/spring-security.xml 
     /WEB-INF/spring-data.xml 
     /WEB-INF/spring-mail.xml 
    </param-value> 
    </context-param> 
    <filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <filter> 
    <filter-name>hibernateFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
    <init-param> 
     <param-name>sessionFactoryBeanName</param-name> 
     <param-value>sessionFactory</param-value> 
    </init-param> 
    </filter> 
    <filter-mapping> 
    <filter-name>hibernateFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>0</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 
+0

方法web.xmlファイルにセキュリティフィルタをマップしますか? – Pastur

+0

@AbelPastur更新を参照 – nKognito

答えて

6

はあなたの春のセキュリティフィルタをマッピングする必要があり、エラーページから主要なデータにアクセスするように:

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 
関連する問題