0

我正在使用这样的 json 对我的控制器中的创建操作发出 POST 请求:

{
  "token":"amsdaashdaksjdh" #assume this is a valid token for a user
  "post": {
     "content":"some random text"
     "title":"random title"
   }
}

但是,我有一个 before_filter 检查,以根据这样的令牌查看用户是否在我的数据库中:

before_filter :authenticate


def authenticate
  @user = User.find_by_authentication_token(params[:token])
  if (@user == nil)
    render :json => {error: "invalid token"}
  end
end

它总是给我无效的令牌错误......

4

1 回答 1

0

当过滤器返回或时, Railsbefore_filter会停止处理链。因为您的语句是执行的最后一个操作,所以过滤器将返回,而不是- 这将停止处理。nilfalseifnil@usernil

当找到用户时,您可以添加一个else返回 true 的块。

def authenticate
  @user = User.find_by_authentication_token(params[:token])
  if @user.nil?
    render :json => {error: "invalid token"}
    false
  else
    true
  end
end
于 2012-07-29T21:42:30.567 回答