2

在 GAE 中,我有 cron 作业,它查找电子邮件表并开始通过每封电子邮件的推送队列工作人员发送这些电子邮件。

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

首先我想问一下关于发送电子邮件的问题,我在 GAE 文档中读到发送电子邮件是排队工作:

邮件服务将消息排队,然后尝试发送它,如果目标邮件服务器不可用,可能会重试。错误和退回邮件将发送到电子邮件的发件人地址。

如果以前的工作方式与队列相同,这是否让我可以选择不使用推送队列?

但是我仍然想将推送队列用于任何未来的功能,所以主要问题是:外部团队负责人使用弹簧安全性完成了安全部分,并且任务不起作用。每个任务的输出:

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>

那么您认为这是什么原因呢?有没有办法在不影响安全性的情况下使任务队列工作?

4

1 回答 1

1

通过将以下内容添加到 spring-security.xml(spring 安全层)与同事一起修复它

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

并在 web.xml 中添加约束(应用引擎安全层)

<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>
于 2012-12-12T14:12:24.207 回答