Angular CanActivate路由在本地主机而不是服务器上工作
我使用的是身份验证。在我的angular应用程序中,我有一个AuthGuard,用于防止在使用auth0进行身份验证期间路由到angular应用程序。在身份验证过程中,url如下所示Angular CanActivate路由在本地主机而不是服务器上工作,angular,auth0,Angular,Auth0,我使用的是身份验证。在我的angular应用程序中,我有一个AuthGuard,用于防止在使用auth0进行身份验证期间路由到angular应用程序。在身份验证过程中,url如下所示 https://www.examplesite.com/#access_token=jlfdsfhWboAhvlRhbZt&expires_in=86400&id_token=aeryJ0eXAfsiOiJ..&token_type=Bearer&state=16d1585
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;
}
}
@Injectable()
导出类AuthGuard实现了CanActivate{
构造函数(专用路由器:路由器,专用位置:位置,专用authService:authService){}
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察的布尔值{
if(route.fragment&&route.fragment.startsWith('access_token')){
返回false;
}
返回true;
}
}
这在本地主机上运行良好。AccessToken路径出现,消失后,应用程序将成功加载
但它在已发布的服务器上不起作用。它显示accesstoken路径,并在未加载应用程序时消失
在控制台中,我收到了这个警告
#访问令牌=rfsdf…&到期令牌=86400&id令牌=rfafsdf…&令牌类型=承载者和状态=72e39d8b-7907-4fbb-88fb-1dd690622541:7
无法识别和忽略密钥“”
知道为什么这在本地主机上有效而在服务器上无效吗?问题在于Auth0和处理哈希。
浏览器控制台中有错误吗?嗨@GünterZöchbauer,我收到一条警告。请在底部查看更新的答案。从这里很难判断本地主机和服务器之间的区别是在哪里部署的。请首先尝试构建应用程序并使用本地iis,然后检查错误是否继续。其次,尝试更改主机文件中的localhost,并检查问题是否仍然存在