剛剛開始玩Tornado並希望提供多種身份驗證方法。目前,我的應用使用tornado.auth.GoogleMixin與Google的混合OpenID/oAuth配合使用,未經身份驗證的用戶會自動發送到Google的身份驗證頁面。Tornado提供多種身份驗證選項
如果未經身份驗證的用戶想要使用其他選項(即。本地身份驗證或tornado.auth.TwitterMixin),我如何實現邏輯以在登錄處理程序中選擇身份驗證機制?
我說「tornado.web.authenticated」我所有的公開的方法裝飾,這裏是正在與谷歌的OpenID/OAuth的工作我的登錄處理程序類(從龍捲風的例子幾乎直):
class AuthLoginHandler(BaseHandler, tornado.auth.GoogleMixin):
@tornado.web.asynchronous
def get(self):
if self.get_argument('openid.mode', None):
self.get_authenticated_user(self.async_callback(self._on_auth))
return
## redirect after auth
self.authenticate_redirect()
def _on_auth(self, user):
## auth fail
if not user:
raise tornado.web.HTTPError(500, 'Google auth failed')
## auth success
identity = self.get_argument('openid.identity', None)
## set identity in cookie
self.set_secure_cookie('identity', tornado.escape.json_encode(identity))
self.redirect('/')
感謝有關解決方案的任何建議。由於
感謝您的幫助。 – joet3ch 2010-10-13 18:22:49