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

Ruby Sinatra应用/hello端点无故触发403认证问题求助

问题原因及解决办法

核心问题

你大概率是启动了ArticlesController而非ApplicationController!因为ArticlesController继承自ApplicationController,它会自动继承父类的所有路由(包括/hello),同时子类中定义的全局before过滤器(authenticate!)会作用于所有属于该子类的路由——自然也包括继承来的/hello,所以访问这个端点会触发认证检查。

另外如果你的应用把两个控制器挂载到了同一个根路径下,也会出现子类过滤器干扰父类路由的情况,但最常见的还是启动了错误的控制器。

解决办法

  • 启动正确的控制器:确保你的启动文件(比如config.ru或app.rb)中运行的是ApplicationController,代码示例:
    run ApplicationController
    
  • 给子类控制器设置路由前缀:如果需要同时使用两个控制器,在ApplicationController中给ArticlesController挂载独立前缀,这样子类的过滤器只会作用于自己的路由范围:
    map '/articles' do
      run ArticlesController
    end
    
  • 限定过滤器的作用范围:把ArticlesController中的全局before改成路由限定的形式,只对/articles开头的路由生效:
    before '/articles' do
      authenticate!
    end
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:30:56