23

我确定我在这里做错了,但这就是我的应用程序控制器的样子:

class ApplicationController < ActionController::API                                                                                                                                                                                                        
  include ActionController::HttpAuthentication::Basic                                                                                                                                                                                                      
  include ActionController::MimeResponds                                                                                                                                                                                                                   

  http_basic_authenticate_with :name => "joeyjojo", :password => "shabadoo"
end

我不知道为什么我的 http_basic_authenticate_with 会抛出这个错误:

undefined method `http_basic_authenticate_with' for ApplicationController:Class

我确定这很简单,但我看不到。MimeResponds 在其他控制器中运行良好。

4

2 回答 2

28

您必须改为包含ActionController::HttpAuthentication::Basic::ControllerMethods,才能使用可用的方法。这是模块ActionController::Base

于 2012-05-03T18:19:58.370 回答
14

如果您有 Rails API,请将其添加到您的控制器:

包括 ActionController::HttpAuthentication::Basic::ControllerMethods

class YourController < ApplicationController

  include ActionController::HttpAuthentication::Basic::ControllerMethods
  http_basic_authenticate_with name: "username", password: "passwd123"

我正在使用 Rails 4.2.4 和我的 ApplicationController:

class ApplicationController < ActionController::API
于 2016-05-09T15:45:32.983 回答