API 인증 고안
모바일 디바이스용 JSON 기반 API를 제공하는 레일즈 웹 어플리케이션에서 작업하고 있습니다.모바일 클라이언트는 먼저 (이메일/패스)로 토큰을 취득한 후 그 토큰으로 후속 API 호출을 합니다.
저는 Gand에 대해 꽤 처음이고, Gand API와 같은 모양을 찾고 있습니다.authenticate(email, pass)
true/false가 반환될 것으로 예상한 후 그에 따라 토큰을 생성하여 반환하거나 거부 메시지를 반환합니다.하지만 Gand는 이런 걸 제공하지 않는 것 같아요.
Gand 1.3이 JSON 기반의 인증을 제공하는 것은 알고 있습니다만, 이것은 제가 필요로 하는 것과는 조금 다릅니다.토큰을 생성하고 클라이언트로 돌아가 그 인증이 끝나면 토큰을 대신 사용합니다.
누가 조언 좀 해주시겠어요?
이 구성에는 다음과 같은 구성이 있습니다.:token_authenticatable
그래서 그것을 당신의 "사용자"에서 고안한 메서드에 추가하면 호출만으로 API를 인증할 수 있습니다.
"/api/v1/recipes?qs=sweet&auth_token=[@user.auth_token]"
사용자에게도 이 기능이 필요할 수 있습니다.
before_save :ensure_authentication_token
UPDATE(API 인증 코드 포함)
찾으시는 방법은 다음과 같습니다.
resource = User.find_for_database_authentication(:login=>params[:user_login][:login])
resource.valid_password?(params[:user_login][:password])
여기 제 요지가 있습니다. JSON/API 로그인과 함께,
Gander는 토큰 인증을 기본적으로 지원하므로 Gand Wiki를 통해 읽을 것을 권장합니다.저는 개인적으로 Gande에서 토큰 인증에 대해 작업한 적은 없지만, Brandon Martin은 토큰 인증의 예를 여기에 제시합니다.
Gand는 랙용 인증 미들웨어인 Warden을 기반으로 합니다.
사용자 인증을 위해 사용자 고유의 (대체) 방법을 구현해야 하는 경우 Warden을 Gandb에 포함된 전략과 함께 참조하십시오.https://github.com/plataformatec/devise/tree/master/lib/devise/strategies
토큰 인증이 필요한 작업이 아닌 경우 쿠키를 반환하고 클라이언트가 요청 헤더에 쿠키를 포함하도록 할 수도 있습니다.웹 세션컨트롤러와 매우 유사하게 동작합니다.
API 세션컨트롤러에서
class Api::V1::SessionsController < Devise::SessionsController
skip_before_action :authenticate_user!
skip_before_action :verify_authenticity_token
def create
warden.authenticate!(:scope => :user)
render :json => current_user
end
end
인루트
namespace :api, :defaults => { :format => 'json' } do
namespace :v1 do
resource :account, :only => :show
devise_scope :user do
post :sessions, :to => 'sessions#create'
delete :session, :to => 'sessions#destroy'
end
end
end
그런 다음 이러한 작업을 수행할 수 있습니다(예: HTTPie 사용).
http -f POST localhost:3000/api/v1/sessions user[email]=user@email.com user[password]=passw0rd
응답 헤더에는 Set-Cookie 헤더에 세션이 있습니다.이후 요청에 이 값을 추가합니다.
http localhost:3000/api/v1/restricted_things/1 'Cookie:_my_site_session=<sessionstring>; path=/; HttpOnly'
언급URL : https://stackoverflow.com/questions/7614798/devise-api-authentication
'programing' 카테고리의 다른 글
JavaScript 데이터 포맷 / 예쁜 프린터 (0) | 2023.04.05 |
---|---|
Python에서 AJAX용 최소 서버를 구현하는 방법은 무엇입니까? (0) | 2023.04.05 |
'react-scripts start' 명령어는 정확히 무엇입니까? (0) | 2023.04.05 |
JQuery를 Typescript 파일로 가져오려면 어떻게 해야 합니까? (0) | 2023.04.05 |
Oracle에 삽입하여 생성된 시퀀스 ID 검색 (0) | 2023.04.05 |