是否可以限制路径中特定 :ids 在 Angular 路由中的访问?使用放大/认知

Posted

技术标签:

【中文标题】是否可以限制路径中特定 :ids 在 Angular 路由中的访问?使用放大/认知【英文标题】:Is it possible to restrict access in Angular Routing for particular :ids in a path? Using Amplify/Cognito 【发布时间】:2021-10-31 22:40:24 【问题描述】:

假设我有一个具有以下设置的路由模块:

const routes: Routes = [
  path: 'login', component: LoginComponent,
  path: '', component: MainComponent,
  children: [
     path: '', redirectTo: '/home', pathMatch: 'full',
   path: 'dashboard/:id', component: DashboardComponent ,
  path: '404', component: HomeComponent,
   path: '**', redirectTo: '/404'
]
];

是否可以限制对以下内容的访问:

https://website.com/dashboard/1(这里只有落入1的用户才能看到1) https://website.com/dashboard/2(这里只有落入2的用户才能看到2)

如果 1 转到 dashboard/2,它们将被路由到错误页面,反之亦然。这可能吗?

【问题讨论】:

【参考方案1】:

这是Guards 的工作。您可以实现canActivate 函数并将优选参数传递给它以进行识别。

class UserToken 
class Permissions 
  canActivate(user: UserToken, id: string): boolean 
    return true;
  


@Injectable()
class CanActivateTeam implements CanActivate 
  constructor(private permissions: Permissions, private currentUser: UserToken) 

  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree 
    return this.permissions.canActivate(this.currentUser, route.params.id);
  

在使用警卫配置您的路线之后:

 path: 'dashboard/:id', component: DashboardComponent, canActivate:['Your Guard Name'] ,

验证成功后,用户将能够继续。如果失败,您将使用角度 Router 实现重定向逻辑。

【讨论】:

谢谢!不知道我是怎么错过这个文档的。

以上是关于是否可以限制路径中特定 :ids 在 Angular 路由中的访问?使用放大/认知的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 mongoDB 中的更新查询限制为特定限制?

是否可以将服务帐户限制为特定的 Big Query 数据集?

是否可以制作保存按钮(不另存为按钮)以将文档保存在特定路径中?

是否可以仅从特定路径验证会话?

rest - 将用户限制在自己的数据中的方法

是否可以让 Ant 打印出特定目标的类路径?如果是这样,怎么做?