2016-01-23 56 views
3

我正在構建應用程序以在Google應用程序引擎上進行部署。我有一個Spring攔截器被定義爲在'account/anything'下的所有請求上被調用。我還有一個安全約束(在web.xml中定義),它強制用戶必須通過身份驗證才能訪問/ account下的任何內容。未在GAE應用程序中調用彈簧攔截器

我注意到,當我登錄PRIOR試圖訪問/帳戶下的任何東西時,攔截器被調用時,我導航到/帳戶/任何東西。

但是,當我來到應用程序冷,沒有登錄,並嘗試直接去/帳戶/任何東西,我被提示登錄(因爲我所期望的,因爲web中定義的安全約束.xml),但攔截器未被調用。

有沒有人看過Google App Engine的這種類型的行爲?

web.xml配置:

<security-constraint> 
    <display-name>Account Security Constratint</display-name> 
    <web-resource-collection> 
     <url-pattern>/account/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 

春攔截器配置:

<mvc:interceptor> 
     <mvc:mapping path="/account/*" /> 
     <bean class="com.myapp.interceptors.AccountInterceptor" /> 
    </mvc:interceptor> 

短期來看,我已經決定要創建一批的實用方法做,這是以前的工作攔截器,我只是在每個控制器方法開始時調用這些方法,並且它可以工作,但理想情況下我希望能夠依賴攔截器。

回答

0

由於安全過濾器,您正在及時登錄,具體爲Spring Security Filter Chain

過濾器在Servlet之前處理。 MVC攔截器在Dispatcher Servlet中工作。

因爲在過濾階段阻止對受保護資源的請求,所以無論是Dispatcher Servlet還是MVC攔截器都不會被調用。 enter image description here

0

在web.xml中,您使用的是使用與Spring容器攔截器不同的容器管理的安全性。現在,只有從Web服務器容器成功登錄後,請求才會發送到spring攔截器。

+0

我希望在成功登錄後調用攔截器,但這並未發生。 – user1154644