是否可以限制路径中特定 :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 路由中的访问?使用放大/认知的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将服务帐户限制为特定的 Big Query 数据集?