没有从Rails 4 App中的JSON API POST请求中获取参数

时间:2014-06-21 19:53:11

标签: ruby-on-rails json api ruby-on-rails-4 http-post

我正在为Rails 4中的Web应用程序的API执行登录功能。 我们的想法是能够从发送带有用户名和密码_digest的JSON的Android应用程序登录。

这是我的api_controller:

class ApiController < ApplicationController
#respond_to :json
before_filter :restrict_access, except: :login
protect_from_forgery except: [:login, :new_ticket]

##==========================================================================
# /api/login/:username/:password_digest
##==========================================================================
def login
    @user = User.find_by_username(login_params[:username])

    if not @user
        user_not_found = 'No existe este usuario'
        render json: {error: true, message: user_not_found}, status: 404
        return
    elsif  not @user.authenticate(login_params[:password_digest]) 
        wrong_password = 'Contraseña incorrecta'
        render json: {error: true, message: wrong_password}, status: 400
    else
        access_token = @user.api_key.access_token
        render json: {access_token: access_token, authenticated: true}
    end
end

##==========================================================================
# /api/users/:access_token/
##==========================================================================

def users
    @users = User.all
    render json: (@users.map { |u| u.as_json(except: :password) }).to_json
end

private
def restrict_access
    api_key = ApiKey.find_by_access_token(params[:access_token])
    head :unauthorized unless api_key
end

def login_params
    params.permit(:username, :password_digest)
end


end

我使用用户名和密码_digest发出了POST请求,但我在login_params中获得了{}。为什么?谢谢!

编辑:这是我的路线的定义

scope 'api' do
  post '/login', to: 'api#login'
  get '/users/:access_token', to: 'api#users'
end

1 个答案:

答案 0 :(得分:0)

没关系,参数在使用curl时有效,但在“高级rest客户端”chrome插件

时无效