2015-01-25 5 views
0

OAuth 요청이 끝날 때 백엔드 서버 서명을하고 사용자 이름을 보내려고합니다. 내가 따라야하는 예제는이 패키지 (https://www.npmjs.com/package/express-jwt)를 사용하지만 백엔드는 Google App Engine에 있습니다. 그래서 App Engine/webapp2 프레임 워크에서 동일한 (사용자 이름에 일부 비밀 번호로 서명)을 어떻게 달성 할 수 있을지 궁금합니다. 프로젝트의 lib 폴더로Google App Engine (Python)에서 JWT를 사용하여 사용자 이름을 토큰화할 수 있습니까?

+0

당신에게 수 "내 백엔드 서버 서명을하고 OAuth 요청이 끝날 때 사용자 이름을 보내라"는 의미에 대해 자세히 설명해주십시오. – Nick

+0

그리고 GAE에서 노드를 사용하고 있기 때문에 사용자 정의 런타임이나 managedVM을 다루고 있다고 가정합니다. – Nick

답변

0

먼저 다운로드 python jwt

코드 :

import cgi 
import datetime 
import webapp2 
from base_handler import BaseRequestHandler, login_required 
from webapp2 import Route 
from models import Customer 
from lib import jwt 
import logging 

def login_required(fn): 
    def check(self, *args, **kargs): 
     auth = self.request.headers.get('Authorization') 
     login_info = jwt.decode(auth, 'secret', algorithms=['HS256']) 
     # your verify login token here 
     logging.error(login_info) 
     # verify success 
     fn(self, *args, **kargs); 
    return check 


class LoginHandler(BaseRequestHandler): 
    def login(self): 
     username = self.request.get('username') 
     password = self.request.get('password') 
     if Customer.login(username, password) is True: 
      encoded = jwt.encode({'username': username}, 'secret', algorithm='HS256') 
      self.response.write({'token': encoded}) 
      return 

     self.response.write('login unsuccess', status=404) 


class APIHandler(BaseRequestHandler): 
    @login_required 
    def get(self): 
     self.response.write('product found') 


app = webapp2.WSGIApplication([ 
    Route('/login', handler=LoginHandler, handler_method='login', name='login', methods=['POST']), 
     ('/', APIHandler) 
], debug=True) 

참고 : 사용 postman 수 있고 (토큰은 로그인 요청에서 얻을 수 있습니다) 헤더를 추가 테스트 클라이언트에 대한