我已经开始了一个新的角度2项目,在我的应用程序中有3种类型的用户(管理员,客户和公司)。如何限制客户访问管理员用户菜单?
答案 0 :(得分:1)
您应该实施ActivatedRoute接口以限制导航到特定网址/资源Read more
答案 1 :(得分:1)
我喜欢将菜单上的声音保存在数据库中。这为我提供了更安全的服务器控件,处理允许/拒绝操作的用户级别的权限。 如果您只对客户端感兴趣,可以在路由模块上添加一个变量:
{ path: 'profile/:user_level', component: ProfileComponent }
然后,您可以实现组件内部的差异。 如何确保用户只能看到他的关卡内容?只需实现一个控件,检查会话用户是否正在尝试查看不适合他的内容。 (ProfileComponent内部的示例)
this.user_level= + params['user_level'];
this.utilityService.checkUserLevel(this.user_level);
UtilityService:
checkUserLevel(url_liv_serial: number) {
let utente: Utente = JSON.parse(localStorage.getItem('currentUser'));
if (url_liv_serial < utente.ute_liv_serial) {
this.router.navigate(['/login']);
let snackBarRef = this.snackBar.open('Access denied', 'Close', {
duration: Constants.short_time_sb
});
}
}
答案 2 :(得分:1)
您可以使用ngx-permissions库。它支持延迟加载,孤立的延迟加载,然后是语法。 加载库
@NgModule({
imports: [
NgxPermissionsModule.forRoot()
],
providers: [],
bootstrap: [AppComponent]
})
加载角色
this.ngxRolesService.addRole('GUEST', () => {
return true;
});
安全根
const appRoutes: Routes = [
{ path: 'home',
component: HomeComponent,
canActivate: [NgxPermissionsGuard],
data: {
permissions: {
only: 'GUEST'
}
}
},
];
您可以在WIKI页
找到详细的文档答案 3 :(得分:0)
你应该做两件事: 1.通过这些菜单项保护您的路线 2.不要为不应该访问这些菜单的用户呈现这些菜单项。
权限可以由数据库驱动。您可以使用角度2中的防护保护路线,并且可以使用ng-if指令限制菜单项的渲染。
https://blog.thoughtram.io/angular/2016/07/18/guards-in-angular-2.html