Ho un front-end sviluppato in AngularJS con ui-router. Per utilizzare l'API REST dal back-end ho bisogno di ottenere un token di accesso OAuth2 (concessione implicita).AngularJS interferenze con router-OIuth2 access_token
Il mio problema sta nel l'ultimo passo della danza OAuth, quando ricevo il token di accesso dal server di autenticazione nell'url
mydomain.com/home/#access_token=hdzjkdnba89fenbjkéz38U0D903ç&...
mydomain.com/home
essere il reindirizzamento URI, ovviamente.
solo una frazione di secondo dopo il reindirizzamento, AngularJS cambia l'URL in qualcosa di simile
mydomain.com/#/my-default-view
e di conseguenza il token di accesso viene cancellato dal URL.
Un paio di cose ora:
- non mi è permesso di definire un URI reindirizzamento contenente un hash ('#') per il mio cliente OAuth2. Quindi qualcosa come
mydomain.com/#/auth-complete/
sarebbe non essere OK. - Io uso
$routeProvider.otherwise('/')
. - Ho provato a impostare
$locationProvider.html5Mode(true);
per rimuovere il "#" nel mezzo, ma il problema è lo stesso (l'URL e il token di accesso vengono cancellati immediatamente dopo il reindirizzamento). - Poiché il token di accesso è ancora accessibile nella risposta HTTP anche dopo la modifica dell'URL da parte di Angular, potrei probabilmente utilizzare un intercettatore
$http
ma suona un po 'troppo per questa attività comune no?
Qualche consiglio?
Probabilmente non si dispone di uno stato corrispondente per l'URL di autenticazione. Dato che hai $ routeProvider.otherwise ('/'), i modelli di url non corrispondenti verranno inoltrati alla directory principale del sito web. – erandac
Ma come faccio a confrontare un URL contenente un token arbitrario? È possibile usare qualcosa come regex per dire "se l'url contiene 'access_token', non fare nulla"? – Buddyshot
Sì, è possibile avere la corrispondenza regolare. Controlla la documentazione qui https://github.com/angular-ui/ui-router/wiki/URL-Routing – erandac