2015-01-02 2 views
0

레일 4를 사용하여 API를 만들고 인증을 위해 Devise을 사용하고 있습니다. 또한 사용자 로그인을 위해 SessionsController을 무시하고 있습니다. 리소스가 user이고 적절한 devise_for 라우트를 설정했습니다. 작동devise 로그인 레일에 대한 맞춤 매개 변수 4

{"user": {"email": "[email protected]", "password": "password"} } 

: 내가 좋아하는 데이터 PARAMS와 curl을 할 경우 자원이 user입니다

def create 
self.resource = warden.authenticate(auth_options) 
## Handle error/success json based on resource 
....... 
end 

때문에 다음과 같이 create 행동이다.

내가 알고 싶은 것은 devise/warden이 적절하게 그것을 선택할 수 있도록 매개 변수를 사용자 정의하는 방법입니다. 즉, 나는 다음과 같은 요청 데이터를 전송하고자하는 그것은 인증을해야합니다

{"email": "[email protected]", "password": "password"} 
+0

당신은 그것들이'user' 객체 아래에 중첩되기를 원한다는 것을 의미합니까? – kurenn

+0

아니요. 객체 아래에 중첩되지 않기를 바랍니다. params [: user] [: email] 대신 params [: email] 및 params [: password]와 같아야합니다. – swaroopsm

+0

리소스에 대한 인증 방법뿐만 아니라 devise sessions 컨트롤러를 덮어 써야합니다. 자세한 정보는 위키 문서 https://github.com/plataformatec/devise/wiki/How-Tos#custom-authentication-methods – kurenn

답변

1

당신은 그냥 자신의 컨트롤러를 생성하고이 같은 뭔가 사용자 매개 변수를 포장 할 수 있습니다

# app/controllers/sessions_controller.rb 
class SessionsController < Devise::RegistrationsController 
    wrap_parameters :user 
end 

# app/config/routes.rb 
devise_for :users, controllers: sessions: 'sessions' 

wrap_parameters를 참조 configuring devise controllers

+0

안녕하세요 @alex는 'wrap_parameters'에 관해 알려 주셔서 감사합니다. 그러나, 같은'rspec'을 사용하면 실패를 리턴합니다. – swaroopsm

+0

@swaroopsm 이제 매개 변수가 제대로 래핑되었는지 디버그하고 확인할 수 있습니까? 오류가 다른 원인 일 수 있습니다. –

+0

예. 매개 변수가 올바르게 랩핑되었습니다. 컬 요청을하면 잘 작동하는 것 같습니다. 하지만 내 사양은 실패합니다! 내 사양에'ActionController :: ParamsWrapper'를 포함시켜야합니까? – swaroopsm