You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grails 3构建RESTful API异常:调用接口返回登录URL而非JSON响应

解决Grails 3 REST API重定向到登录页的问题

你的API请求大概率被Grails的安全拦截组件(多数是Spring Security)拦截了,所以才会返回登录URL而非预期的JSON响应。下面是具体的排查和解决步骤:

1. 确认是否启用了Spring Security

先检查项目的build.gradle文件,看看是否引入了spring-security-core插件依赖。如果存在这个依赖,那就是安全配置在拦截未认证请求,默认会将这类请求重定向到登录页面。

2. 配置安全规则放行API端点

如果使用的是Spring Security Core插件,你需要在grails-app/conf/application.groovy(或Config.groovy)中添加拦截规则,让roomCheckAPI/login/**路径允许所有访问:

grails.plugin.springsecurity.interceptUrlMap = [
    '/roomCheckAPI/login/**': ['permitAll'],
    // 保留你原有其他安全规则...
]

或者,也可以直接在控制器的validateUser方法上添加@Secured注解来放行:

import org.springframework.security.access.annotation.Secured

// ...

@Secured('permitAll')
def validateUser() {
    // 你的方法逻辑...
}

3. 优化请求头明确要求JSON响应

测试时建议给curl请求加上Accept头,明确告知服务器你期望JSON格式的响应,避免格式协商问题:

curl -v -g -k -H "Accept: application/json" https://localhost:8444/appName/roomCheckAPI/login/user1

4. 额外检查点

  • 确认URL映射正确性:你的URL Mappings.groovy配置看起来没问题,注意控制器名的大小写(MyExampleController对应的短名是myExample,和你配置的一致)。
  • 检查allowedMethods配置:你已设置validateUser : ["GET"],和curl的GET请求匹配,这部分无需调整。

调整配置后重启应用,再测试应该就能得到预期的JSON响应了。

内容的提问来源于stack exchange,提问作者user2529774

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:57:48