google-app-engine - español - google cloud app engine prices
Aplicación autenticada en appengine con angularjs (2)
Consulte también esta pregunta: Limitar el acceso a un archivo estático con GAE al servir contenido estático.
En su controlador, puede usar el servicio de usuario para averiguar quién inició sesión y si este "usuario" es un administrador. Un ejemplo: https://developers.google.com/appengine/docs/python/users/overview
OAUTH2 es una mejor opción si usa una aplicación cliente.
Preparar:
- plantillas: angularjs (todo servido estáticamente desde app.yaml)
- respuestas api: json utilizadas por los controladores angularjs para extraer datos de la aplicación
El contenido de la página se sirve desde un archivo estático, por lo que no es posible usar users.create_login_url () , users.create_logout_url () , etc.
¿Cómo se suele hacer para que los usuarios inicien o cierren sesión, para saber si el usuario está conectado / desconectado, el usuario es administrador de una aplicación como esta?
De hecho, estoy trabajando en una solución a este problema. El proyecto se llama Sapling , es un proyecto inicial de AngularJS que cubre la administración de usuarios.
Este es el enfoque que tomé:
El usuario llega al sitio: carga html y javascript
Después de cargar Angular, haz una solicitud
GET
a''/api/user/me''
. Si el usuario se registra a cambio de una representación del usuario, Ej.{ "name": "Bob", "admin": false, // ect. }
Si el usuario no está conectado, se devuelve un error
401
.Si se devuelve un objeto de usuario, verifique si el usuario también es y administrador. Si se recibe un
401
redirija al usuario a las páginas de inicio de sesión (puede crear una página de inicio de sesión dentro de su aplicación Angular, o si cree que el usuario no se confundirá, puede enviarlos al inicio de sesión de Google directamente).
Entonces, ¿cómo haces esto con el servicio de usuario de App Engine?
En su controlador de solicitud para la url ''/ api / user / me''
Llamar a get_current_user()
y is_current_user_admin()
El usuario ha iniciado sesión: añada el administrador
boolean
y devuelva la representación del usuario como json.El usuario no ha iniciado sesión - devuelve un
401
no autorizado, es decir,response.set_status(401)
¿Cómo se dirige al usuario a las URL de inicio de sesión y de cierre de sesión?
Puede crear controladores de solicitudes en las siguientes URL:
''api / usuario / login''
webapp2.redirect(users.create_login_url())
''api / usuario / logout''
webapp2.redirect(users.create_logout_url())
Y dirígelos a los usuarios desde Angular.
Creo que cubrí los conceptos básicos. Si necesita más detalles, por favor hágamelo saber.