我正在为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
答案 0 :(得分:0)
没关系,参数在使用curl时有效,但在“高级rest客户端”chrome插件
时无效