NodeJS 电子JS:防止导航到特定路径名

voase2hg  于 2022-11-29  发布在  Node.js
关注(0)|答案(1)|浏览(136)

当使用loadURL加载我的网站时,我想阻止用户导航到两个页面。我需要在电子应用程序中执行此操作。
例如,在我的应用程序中,我位于:

https://WebsiteApp.com

但我想阻止导航到该页:

https://WebsiteApp.com/security

是否有任何方法可以阻止此路径的导航?

pathname: '/security'
c3frrgcw

c3frrgcw1#

尝试使用“Route Guard”,它也称为Navigation Guard,在某些框架(如Angular或Vue)中实现,在这种情况下,使用React路由器和挂钩(包括打字脚本)进行React。
无论如何,检查this explanation,在那里你可以根据授权级别等重定向页面,这是一个很长的解释,但可能会帮助你。

AuthGuard实现需要从AuthorizationService创建一个内部示例,以验证通过pageEnabled函数进行的访问。

// auth-guard.ts

import { Commands, Context, RedirectResult } from '@vaadin/router';
import { AuthorizationService } from './authorization-service';
import { PageEnabled } from './page-enabled';

export class AuthGuard implements PageEnabled {

  private authService: AuthorizationService;

  constructor() {
    this.authService = new AuthorizationService();
  }

  public async pageEnabled(context: Context, commands: Commands, pathRedirect?: string): Promise<RedirectResult | undefined> {
    const isAuthenticated = await this.authService.isAuthorized();

    if(!isAuthenticated) {
      console.warn('User not authorized', context.pathname);
     return commands.redirect(pathRedirect? pathRedirect: '/');
    }

    return undefined;
  }
}

此外,此类还需要将PageEnabled接口定义到/shared/auth/page-enabled.ts

//page-enabled.ts

import { Commands, Context, RedirectResult } from '@vaadin/router';

export interface PageEnabled {
  pageEnabled(
    context: Context,
    commands: Commands,
    pathRedirect?: string
  ): Promise<RedirectResult | undefined>;
}

相关问题