Acabo de empezar a jugar con Tornado y quiero ofrecer varios métodos de autenticación. Actualmente, mi aplicación funciona bien con el híbrido OpenID/oAuth de Google con tornado.auth.GoogleMixin y los usuarios no autenticados se envían automáticamente a la página de autenticación de Google.Múltiples opciones de autenticación con Tornado
Si un usuario no autenticado desea usar otra opción (es decir, auth local o tornado.auth.TwitterMixin), ¿cómo puedo implementar la lógica para elegir un mecanismo de autenticación dentro del controlador de inicio de sesión?
añadí el decorador 'tornado.web.authenticated' a todos mis métodos expuestos, y aquí es la clase de mi manejador de inicio de sesión (más o menos directamente de los ejemplos Tornado) que actualmente está trabajando con Google 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('/')
Valora cualquier sugerencia que puedas solucionar. Gracias
Gracias por la ayuda. – joet3ch