Ruby on rails 在ruby on rails上使用web API中的Desive创建会话
我正在尝试使用Desive为我的项目创建一个登录系统,我选择为他创建,因为这个项目将具有访问权限和http api 目前,我可以使用注册类的以下方法注册用户:Ruby on rails 在ruby on rails上使用web API中的Desive创建会话,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在尝试使用Desive为我的项目创建一个登录系统,我选择为他创建,因为这个项目将具有访问权限和http api 目前,我可以使用注册类的以下方法注册用户: def create if UserService.create_user(params[:username], params[:email]) @user = User.new(user_params) if @user.save render json: @user, status: :created
def create
if UserService.create_user(params[:username], params[:email])
@user = User.new(user_params)
if @user.save
render json: @user, status: :created
return
end
render json: @user.errors, status: :unprocessable_entity
return
end
render json: "exit", status: :unprocessable_entity
end
这就是我的用户注释的模型,它包含了Desive添加的所有内容:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :schedules
end
另一个问题是,在创建用户时,他并没有生成令牌,这是应该工作的吗
这是我的错误,如何为API执行此操作?
designe::InternalHelpers
已被删除。您应该包括:
class Api::SessionController
class Api::SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, only: [:create]
include Devise::InternalHelpers
before_filter :ensure_params_exist
def create
build_resource
resource = User.find_for_database_authentication(email: params[:email])
return invalid_login_attempt unless resource
if resource.valid_password?(password: params[:password])
sign_in("user", resource)
render(json: {success: true, auth_token: resource.auth_token, login: resource.email})
return
end
invalid_login_attempt
end
def destroy
sign_out(resource_name)
end
protected
def ensure_params_exist
return unless params[:email].blank?
render(json: {success: false, message: "missing email parameter"}, status: 422)
return unless params[:password].blank?
render(json: {success: false, message: "missing password parameter"}, status: 422)
end
def invalid_login_attempt
warden.custom_failure!
render(json: {success: false, message: "Error with your login or password"}, status: 401)
end
private
def create_params
params.permit(:email, :password)
end
end
class Api::SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, only: [:create]
include Devise::Controllers::Helpers
...