2011-09-16 5 views
3

저는 현재 일반적인 비주얼 웹 애플리케이션 goop 외에도 외부 애플리케이션에서 사용할 수 있도록 몇 가지 RESTful API 서비스를 제공하는 애플리케이션을 개발 중입니다. 나는 Devise를 사용하여 사용자 인증을 관리하고 있지만 특정 입력을받은 사용자를 "수동으로"인증하는 방법에 어려움을 겪고 있습니다.API에 대한 레일 인증

내가 갖고있는 사례는 API의 사용자가 실제로 화면의 시각적 인 로그 등을 사용하여 로그인하도록하고 싶습니다. 사용자 이름과 비밀번호를 제출하고 인증 한 후 내 API 서비스.

Devise가 제공하는 sign_in 메서드를 사용하여 사용자에게 서명 할 수 있음을 알고 있지만 인증을 완전히 무시한 것으로 보입니다. 여기에 좀 더 자세하게 설명하고 싶습니다.

사용자 컨트롤러에서 connect라는 GET 라우트를 가정합니다. 컨트롤러는 Devise 등록 컨트롤러를 완전히 대체하지만 세션 1은 대체하지 않습니다. 내 서비스에 대한 URL은 다음과 같습니다

<server>/users/connect 

그것은 내 질문의 버릇에 대한 구체적이고 중요하지 않은 일부 서비스에 추가하여 '이메일', '암호'매개 변수를 예상. -이 때문에 일반화의 I이 작업을 수행하기 위해 고안 소스의 방법을 찾을 수 없었습니다

def connect 
    user = User.find_by_email(params[:email]) 
    password = params[:password] 
    # here is the part I'm pseudo coding out 
    if user.is_valid_password(password) 
    ...do my stuff... 
    end 

    render :json ...etc... 
end 

: 내가 알고 싶은 무엇

는 다음 의사 코드에 해당 무언가를 구현하는 방법입니다 이렇게 많은 방법으로 나는 그것을 놓치고있을 가능성이 높습니다.

누구든지 아이디어가 있습니까? 나는) 자신의 일을 구현해야하고 b) Devise에서 벗어나지 않아도되기를 바라고 있습니다. 그것은 비 API 서비스에 대해 많은 것을 제공합니다 ...

감사합니다!

은 내가 고안의 token_authenticatable이 갈 수있는 방법입니다

답변

2

번째 탈락했습니다. 우리는 API 기반 로그인을 여러 번 성공적으로 해왔습니다. 설정에서

/초기화/devise.rb

user.rb에서
config.token_authentication_key = :nameofyourapikeyhere 

:

devise … token_authenticatable, ... 

위에서, 당신은 API 키 아무것도의 이름을 지정하고 다음 사용자 /로 경로를 가질 수 있습니다/connect? apikey = whatever (예를 들어 apikey 사용). 데이터베이스에서는 authentication_token이되지만 잘 작동합니다.

사용자가 authentication_token을 가지고 params (또는 위의 예 : apikey)에 전송되면 사용자가 로그인하게됩니다.

+0

멋진 아이디어로 살펴 보겠습니다. 감사합니다 :) – jaydel

+0

이것은 현재 사용되지 않으며, 누구든지 새로운 구현으로 이것을 구현하는 방법을 알고 있습니까? – halbano

+0

토큰 기반 작성 인증에는 https://github.com/lynndylanhurley/devise_token_auth를 사용해야합니다. – plunntic