我正在使用Rails 4构建API并使用Devise进行身份验证。我也覆盖用于登录用户的SessionsController
。我有一个名为user
的资源,并设置了相应的devise_for
路由。 create
操作如下:
def create
self.resource = warden.authenticate(auth_options)
## Handle error / success json based on resource
.......
end
由于资源为user
,如果我使用数据参数执行curl
,请执行以下操作:
{"user": {"email": "hello@example.org", "password": "password"} }
它有效。
我想知道的是如何自定义参数,以便devise/warden
能够正确选择它。
即,我想发送以下请求数据,它应该进行身份验证:
{"email": "hello@example.org", "password": "password"}
答案 0 :(得分:3)
您可以创建自己的控制器并使用以下内容包装用户参数:
# app/controllers/sessions_controller.rb
class SessionsController < Devise::RegistrationsController
wrap_parameters :user
end
# app/config/routes.rb
devise_for :users, controllers: sessions: 'sessions'