用户总是被重定向到主页而不是请求的页面

User always being redirected to Home page instead of requested page

在我的 Angular 项目中,用户正在使用库 angular-auth-oidc-client 通过 OIDC 提供商进行身份验证。因此,当用户未通过身份验证或会话过期并请求类似 https://localhost:4202/account 的页面时,用户将被重定向到 OIDC 登录页面,并且在成功登录后,用户总是被重定向到主页而不是请求的页面

复制:

重现该行为的步骤:

  1. 用您自己的配置替换 Auth 配置
  2. 运行项目
npm run start
  1. 转到 https://localhost:4202/account。它将重定向到 OIDC 登录页面,然后在成功登录后将用户重定向到 https://localhost:4202 而不是 https://localhost:4202/account

问题是没有将 redirectedUrl 存储在存储器中并在成功导航后将其取回。该库已经有 AutoLoginPartialRoutesGuard 可用于自定义守卫。请参阅 Github 中的源代码和下面扩展 AutoLoginPartialRoutesGuard 的示例管理守卫。这将确保用户重定向回原始 URL

Admin Auth Guard:


@Injectable({
    providedIn: 'root',
})
export class AdminUserAuthGuard implements CanActivate {
    constructor(
        private router: Router,
        private autoLoginPartialRoutesGuard: AutoLoginPartialRoutesGuard
    ) {}


    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
        if (this.autoLoginPartialRoutesGuard.canActivate(route, state) && this.currentUserState.hasSysAdminRole) {
            return true;
        }
        if (this.autoLoginPartialRoutesGuard.canActivate(route, state) && !this.currentUserState.hasSysAdminRole) {
            this.router.navigate(['/unauthorized']);
        }
        return false;
    }
}