2012-12-12 57 views
2

在GAE中,我有cron作業,它查找電子郵件表並通過每個電子郵件的推送隊列工作人員開始發送這些電子郵件。帶有任務隊列問題的彈簧安全

// Worker method body 
MailService m = MailServiceFactory.getMailService(); 
m.sendToAdmins(new MailService.Message(fromAddress, "", subject, content)); 

首先我想請教一下發送電子郵件,我在GAE文件讀過發送電子郵件被排隊的作業:

郵件服務隊列的消息,然後試圖發送, 如果目標郵件服務器不可用,可能會重試。 錯誤和退回郵件被髮送到 電子郵件的發件人地址。

如果以前的工作方式與隊列相同,這是否讓我選擇不使用推送隊列?

但是我仍然想使用Push隊列來實現任何未來的功能,所以下面是主要問題: Out小組負責人使用spring安全性做了安全部分,但任務無法正常工作。以及每個任務輸出:

Dec 12, 2012 8:44:2 AM com.google.apphosting.utils.jetty.AppEngineAuthentication$AppEngineAuthenticator authenticate 
INFO: Returning NOBODY because of SkipAdminCheck. 

請注意,當我評論如下他們所做的工作只是罰款:

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class> org.springframework.web.filter.DelegatingFilterProxy</filterclass> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

那麼你認爲究竟是什麼原因呢?有沒有辦法讓任務隊列工作而不影響安全性?

回答

1

通過將以下至彈簧的security.xml(彈簧安全層)

<http use-expressions="true" entry-point-ref="authenticationEntryPoint"> 
<intercept-url pattern="/queuecontroller/**" access="permitAll" /> 

和在web.xml添加約束在其周圍(app引擎安全層)與同事固定它

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>any-resource</web-resource-name> 
     <url-pattern>/emailcontroller</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>admin</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
    </security-constraint>