javascript - escape - ng-bind-html
AngularJS-Manejo de token de actualizaciĆ³n? (2)
Eche un vistazo a esto: https://github.com/witoldsz/angular-http-auth .
Él usa un buffer para reproducir las solicitudes después de la autenticación.
Estoy construyendo un SPA con AngularJS con comunicación a un servicio (JAVA).
Cuando el usuario envía su nombre de usuario / contraseña, el servicio devuelve ambos: token de acceso y token de actualización. Intento manejarlo: si recibo una respuesta con el estado 401, envíe el token de actualización y luego envíe su última solicitud nuevamente. Intenté hacer eso incluyendo $ http, pero angular no me permite incluirlo en este interceptor. ¿Hay alguna manera de volver a crear la solicitud original con este parámetro de respuesta que estoy recibiendo?
Algo como:
- Me sale 401
- guardar mi solicitud
- si tengo un token de actualización, envío ese token de actualización
- en caso de éxito, vuelva a enviar mi solicitud
en caso de error redirigir a / página de inicio de sesión
''use strict''; angular.module(''testApp'') .factory(''authentificationFactory'', function($rootScope, $q, $window, $location, CONF) { return { request: function(config) { config.headers = config.headers || {}; if ($window.sessionStorage.token) { config.headers.Authorization = ''Bearer '' + $window.sessionStorage.token; } console.log(config); $rootScope.lastRequest = config; return config; }, response: function(response) { console.log($rootScope.lastRequest); if (response.status === 401) { if ($window.sessionStorage.refreshToken) { //Save, request new token, send old response //if it fails, go to login $location.url(''/login''); } else { $location.url(''/login''); } } return response || $q.when(response); } }; });
Pregunta de bonificación (la pregunta principal es más importante): hay 2 aplicaciones móviles que también se conectarán a mi servicio, y cuando inicio sesión desde mi aplicación web, y unos minutos más tarde desde mi aplicación móvil, la aplicación móvil toma un nuevo token de actualización y el token de actualización de mi aplicación web ya no es válido. ¿Cuál sería la mejor opción para lidiar con eso?
Gracias por su tiempo, saludos cordiales
Recomiendo encarecidamente no enviar y almacenar tokens de actualización en SPA como Angular.
Si está utilizando almacenamiento de sesión o almacenamiento local, está abriendo una ventana de oportunidad para capturar este refreshToken, ya sea por un ataque XSS o por el usuario que deja la computadora desatendida.
Vea este artículo o esta pregunta para más información.