【发布时间】:2020-02-27 00:13:24
【问题描述】:
当我们通过 AWS Cognito 使用社交登录时,Cognito 会向浏览器发送重定向以转到 signin redirect URL 后登录。在这种情况下,配置的 URL 是http://localhost:4200/home/。
当应用收到此重定向时,它会转到http://localhost:4200/home/,但显示的组件仍然是http:localhost:4200/signin/ 的组件。如果我通过选择 URL 并按 Enter 手动刷新页面,则会显示主页组件。
路由器配置如下:
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'signin' },
{ path: 'home', component: HomeComponent, canActivate: [ AuthGuard ] },
{ path: 'signin', component: SigninComponent, canActivate: [ UnauthGuard ] },
{ path: 'signout', component: SignoutComponent, canActivate: [ UnauthGuard ] }
]
所以应用程序总是首先重定向到signin。问题似乎是双重重定向。
关于如何解决这个问题的想法?
我在没有Router 重定向的情况下进行了尝试。我添加了一个welcome 页面,该页面与'' 路由一起显示。在此页面上单击登录时,应用程序最初仍会使用 signin 路由重新加载(它离开的位置)并重定向到 home 路由,但仍会显示登录组件。
const routes: Routes = [
{ path: '', component: WelcomeComponent, canActivate: [ UnauthGuard ] },
{ path: 'home', component: HomeComponent, canActivate: [ AuthGuard ] },
{ path: 'signin', component: SigninComponent, canActivate: [ UnauthGuard ] },
{ path: 'signout', component: SignoutComponent, canActivate: [ UnauthGuard ] }
]
更新
查看答案。提交了错误报告:
【问题讨论】:
标签: javascript angular angular-routing angular-router aws-amplify