在轨道上使用葡萄中的葡萄创建身份验证API的问题

时间:2019-08-01 15:01:52

标签: ruby-on-rails ruby devise grape

我想使用grape来验证API。对于身份验证,我使用了Devise gem。我尝试将devise :: sessioncontroller包含到我的葡萄api文件中,但这是caput。

class SignIn < BaseAPI
  resource :sign_in do
    desc 'Sign in page'
    params do
      requires :username, type: String
    end
    post do
      User.authenticate(params)
    end
  end
end

1 个答案:

答案 0 :(得分:0)

尝试以下代码。您应该能够进行身份验证。您需要设置一些额外的东西。遵循this文档以了解更多详细信息。

resource :sign_in do
  desc "Authenticate user"
  params do
    requires :login, type: String
    requires :password, type: String
  end
  post :login do

    user = User.find_by_email(params[:login].downcase)
    if user && user.authenticate(params[:password])
      token = TokenGenerator.create(user_id: user.id)
      {token: token.access_token}
    else
      error!('Unauthorized.', 401)
    end

  end
end