Как обрабатывать хеш-фрагменты из URL-адресов перенаправления oauth в маршрутизации Angular2 RC3

Я пытаюсь найти способ справиться с настройкой маршрута Angular2 Typescript (используя маршрутизатор 3.0.0-alpha.8), который будет обрабатывать маршруты, начинающиеся с хеш-фрагментов.

Приложение, над которым я работаю, обрабатывает все входы в систему извне (то, что я не могу контролировать) через бэкэнд рельсов с oauth2. Перенаправление пользователей на страницу внешнего входа работает нормально, но при перенаправлении URL-адреса всегда присутствуетhttp://localhost:4200#access_token=TOKEN (где TOKEN - это серия цифр и букв) отправляется обратно, но я не могу понять, как настроить маршрут, который может обрабатывать# подписать, чтобы я мог поймать его и перенаправить на соответствующий компонент.

В предыдущем приложении Angular1ui-router смог использовать в маршруте:

.state('accessToken', {
  url: '/access_token=:token',
  controller: 'LoginController',
  params: { token: null }
})

и у него не было проблем с принятием URL перенаправления, который был отправлен обратно, и затем он передавал бы все на LoginController для обработки остальной части бизнеса аутентификации / токенов на внешнем интерфейсе.

Это приложение, однако, Angular2 и Typescript, и параметры запроса маршрутизатора кажутся менее гибкими, и у меня возникают проблемы при реализации аналогичного решения. Я шел на основеэта секция в документах, но все примеры строят что-то еще, например/heroes прежде чем перейти к сложной части параметров запроса, например/heroes/:id, Я также искал через stackoverflow и не смог найти ничего, что работало бы с Angular2 и Typescript и текущим маршрутизатором.

Это мое текущее (нерабочее) решение:

import { provideRouter, RouterConfig } from '@angular/router';

import { HomeComponent } from './components/home/home.component';
import { TestComponent } from './components/test/test.component';


export const appRoutes: RouterConfig = [
  {
    path: '',
    component: HomeComponent,
    terminal: true
  },
  {
    path: 'access_token',
    component: TestComponent
  }
];

export const APP_ROUTER_PROVIDERS = [
  provideRouter(appRoutes)
];

Если я возьму URL перенаправления, который отправляется обратно, и изменю его (исключительно для целей тестирования) на что-то вродеhttp://localhost:4200/access_token=TOKEN это работает отлично. К сожалению, на самом деле я не могу контролировать формат URL-адреса перенаправления в реальной жизни, и я не могу найти решение, которое может справиться с тем фактом, что оно начинается с фрагмента хеша, а не с/ а затем мои параметры запроса. Все примеры маршрутизации со сложными символами или символами, которые я могу найти, начинаются с/.

Я попытался изменить свое решение выше, чтобы:access_token, что не сработало, а также перечисление его в качестве дочернего маршрута под базовым маршрутом следующим образом:

{
  path: '',
  component: HomeComponent,
  terminal: true,
  children: [
    { path: 'access_token',  component: TestComponent },
  ]
}

что привело к следующей ошибке консоли:platform-browser.umd.js:2312 EXCEPTION: Error: Uncaught (in promise): Error: Cannot match any routes: ''

Я чувствую, что должно быть абсолютно чистое решение, особенно потому, что очень много API обрабатывают свою аутентификацию через URL-адрес перенаправления, как это, но независимо от того, сколько я копаю в документах, я не могу найти его. Любые советы о том, как реализовать это, будут высоко оценены.

Ответы на вопрос(1)

Ваш ответ на вопрос