【问题标题】:CanActivate routing works on localhost not on serverCanActivate 路由适用于本地主机而不是服务器
【发布时间】:2017-06-29 22:08:05
【问题描述】:

我正在使用auth0 进行身份验证。在我的角度应用程序中,我有一个 AuthGuard,以防止在使用 auth0 进行身份验证期间路由到角度应用程序。在身份验证期间,url 看起来像这样

     https://www.examplesite.com/#access_token=jlfdsfhWboAhvlRhbZt&expires_in=86400&id_token=aeryJ0eXAfsiOiJ..&token_type=Bearer&state=16d15855-0827-4189-bc34-26b981d578bb

该应用包含以下路线

export const ROUTES: Routes = [
 { path: '', loadChildren: './home/home.module#HomeModule', canActivate:    [AuthGuard] },
 { path: '**', redirectTo: '/' },
];

这里是 AuthGuard:

@Injectable()
export class AuthGuard implements CanActivate {

constructor(private router: Router, private location: Location, private authService: AuthService) { }

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {

    if (route.fragment && route.fragment.startsWith('access_token')) {
        return false;
    }

    return true;
}
}

这在本地主机上运行良好。 AccessToken 路径出现,消失后应用加载成功。

但它不适用于已发布的服务器。它显示了 accesstoken 路径,它消失了应用程序未加载。

在控制台中我收到此警告 #access_token=rfsdf...&expires_in=86400&id_token=rfafsdf...&token_type=Bearer&state=72e39d8b-7907-4fbb-88fb-1dd690622541:7 无法识别并忽略键“”。

知道为什么这在 localhost 上有效,但在服务器上无效?

【问题讨论】:

  • 浏览器控制台有错误吗?
  • 嗨@GünterZöchbauer 我收到一个警告。请参阅底部的更新答案。
  • 很难从这里看出 localhost 和服务器之间的区别是您部署它的位置。
  • 首先尝试构建您的应用程序并使用本地 iis 并检查错误是否继续。第二次尝试更改主机文件中的 localhost 并检查问题是否仍然存在

标签: angular auth0


【解决方案1】:

问题在于 Auth0 和处理哈希。 https://github.com/auth0/lock/issues/527

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多