Ruby on rails 在ruby on rails上使用web API中的Desive创建会话

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

我正在尝试使用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
      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
  ...