#angularjs #angularjs-routing
#angularjs #angularjs-маршрутизация
Вопрос:
Я пишу приложение angular, в котором мне нужно принять URL-адрес с хэшем фрагмента (OAuth 2.0). Сокращая его, он выглядит следующим образом.
http://example.com/#access_token=918f4d6e90b25b13ef66a
Когда этот URI загружается, процесс маршрутизации не распознает путь и корректно перенаправляет приложение на маршрут по умолчанию. Проблема в том, что таким образом я теряю хэш и больше не могу его анализировать.
Что я хочу сделать, так это проанализировать хэш до его удаления. У вас есть какие-либо идеи о возможном решении?
Спасибо.
P.S. В этом приложении я не могу использовать режим HTML5. С включенной функцией он работает просто отлично.
Комментарии:
1. Итак, что именно хотелось бы, чтобы произошло?
2. Я хотел бы иметь возможность анализировать хэш перед его потерей.
3. Очевидно 🙂 Но чего вы пытаетесь достичь на более высоком уровне? Как бы вы использовали этот проанализированный токен?
4. Я пытаюсь устранить ошибку в этом проекте [1]. Я хочу сохранить токен доступа в службе, чтобы я мог использовать его для выполнения некоторых запросов аутентификации. [1] lelylan.github.io/lelylan-ng
Ответ №1:
Вам просто нужно определить дополнительный маршрут для «перехвата» и сохранить токен доступа, прежде чем перенаправлять на другой маршрут.
Например.:
$routeProvider
...
.when('/access_token=:accessToken', {
template: '',
controller: function ($location, $routeParams, AuthService) {
AuthService.login( // `AuthService` will save the token
$routeParams.accessToken); // The token is available in `$routeParams
// under the key `accessToken`
$location.path('/'); // Redirect to the default route
$location.replace(); // For better UX, remove this route from history
}
})
Смотрите также эту короткую демонстрацию.
Или перейдите непосредственно к этому URL для демонстрации в реальном времени:
http://fiddle.jshell.net/ExpertSystem/N8CgC/show#access_token=12345.
Комментарии:
1. Собираюсь попробовать это завтра утром. Большое спасибо за ваш ответ.