switch escape cloak agregar javascript angularjs authentication access-token http-status-code-401

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:

  1. Me sale 401
  2. guardar mi solicitud
  3. si tengo un token de actualización, envío ese token de actualización
  4. en caso de éxito, vuelva a enviar mi solicitud
  5. 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.