【发布时间】:2015-09-04 10:34:30
【问题描述】:
我的 Grails 应用程序提供了一个受 Spring Security 2.0-RC4 插件保护的 REST API。其中一项操作不需要身份验证,看起来像这样
@Secured(['permitAll'])
class PdfController {
static allowedMethods = [download: "POST"]
static responseFormats = ['pdf']
def download(String data) {
log.debug "Generating PDF from form data $data"
// impl omitted
}
}
当我通过 grails run-app 或 grails run-war 在本地运行应用程序时,一切都按预期工作,即您可以在不进行身份验证的情况下调用此操作。但是,如果我使用 grails -Dgrails.env=dev war 构建一个 .war 文件并将其部署到临时服务器上的 Tomcat,我将无法再匿名调用此端点。
在登台服务器上,如果我尝试在不进行身份验证的情况下调用此操作,我会收到一个 302(重定向)响应,将我重定向到登录页面。这是我期望安全操作的行为。
我不确定这是否相关,但此操作与所有其他操作之间的一个区别是它由表单发布调用,因此数据应为 x-www-form-urlencoded(所有其他操作通过 AJAX 调用并期望 JSON 数据)。
【问题讨论】:
标签: tomcat grails spring-security war