2012-06-21 2 views
2

나는 토네이도를 사용하여 제 3 자의 트위터와 인증합니다.토네이도 인증

내 로그인 핸들러는, 내가 보안 쿠키를 설정 한 후 _on_auth에 리디렉션 문을 필요로 할 수있다이

class AuthLoginHandler(BaseHandler, tornado.auth.TwitterMixin, tornado.web.RequestHandler): 
    @tornado.web.asynchronous 
    def get(self): 
     if self.get_argument('oauth_token', None): 
      self.get_authenticated_user(self.async_callback(self._on_auth)) 
      return 
     self.authorize_redirect("/auth/login") 
     return 

    def _on_auth(self, user): 
     if not user: 
      raise tornado.web.HTTPError(500, "Twitter auth failed") 
     self.set_secure_cookie("user", tornado.escape.json_encode(user)) 
     return 

내 질문처럼 보인다? 돌아 오지 않으면 호출 함수로 돌아갑니다. 이 인증 핸들러는 로그인 데코레이터에 의해 호출됩니다. 또한 대부분의 예제에서/auth/login? next = 다음의 significane은 무엇입니까?

답변

4

예, 사용자 자신을 리디렉션해야합니다. _on_auth이 비동기 적으로 호출되므로 return은 호출하는 함수로 이동하지 않습니다. 이미 끝났습니다.

/auth/login?next=xxx에 대해서는 다음 매개 변수가 요청이 처음으로 로그인 페이지로 리디렉션 된 원래 페이지로 설정됩니다. _on_auth이 리디렉션에 성공하면 사용됩니다. // target.com/annoythem` :`다음 = HTTP하면 어떻게됩니까

self.redirect(self.get_argument('next', '/')) 
+0

:

_on_auth의 끝에서

로 리디렉션? 이것이 경미한 보안 문제가 아니겠습니까? 아마 '다음'은 친척이 될 것인가? –