我有一个简单的问题。如何将一个通用功能注入到许多组件中。
我有一个名为 add-users 的组件,我希望它只能由管理员看到。为此,我为所有用户添加了一组权限,并且我想将一个通用函数注入到许多组件中,以检查用户是否有权查看它们。不用担心黑客,因为在后端进行了另一项检查,即使人们为自己添加权限,他们仍然无法使用管理功能。
例子:
<add-users [required-permissions]></add-users>
我有一个简单的问题。如何将一个通用功能注入到许多组件中。
我有一个名为 add-users 的组件,我希望它只能由管理员看到。为此,我为所有用户添加了一组权限,并且我想将一个通用函数注入到许多组件中,以检查用户是否有权查看它们。不用担心黑客,因为在后端进行了另一项检查,即使人们为自己添加权限,他们仍然无法使用管理功能。
例子:
<add-users [required-permissions]></add-users>
JB Nizet 给出了最接近的答案。
我这样做是为了,每当用户登录时,他/她的所有权限都会从后端发送到前端并存储在 localStorage 数组中。
然后我将一个全局服务类注入到我的 angular2 应用程序中
import { Injectable, Inject } from '@angular/core';
import { Observable } from "rxjs/Observable";
import globals = require('./../globals');
import { ShoppingCart } from './../Models/ShoppingCart';
@Injectable()
export class PermissionsEngine {
private userPermissions: Array<String> = Array<String>();
private permissionsString = "";
constructor() {
this.calcPermissions();
}
calcPermissions() {
this.permissionsString = localStorage.getItem("permissions");
if ( this.permissionsString ) {
this.userPermissions = this.permissionsString.split(",");
} else {
this.userPermissions = new Array<String>();
}
}
hasPermission( _slug: string ) {
if ( this.userPermissions.indexOf( _slug ) != -1 ) {
return true;
}
return false;
}
}
这可以注入组件并从应用程序的任何位置调用
<div *ngIf="_permissionsEngine.hasPermission('add_users')"></div>
希望这对某人有帮助!
有一个称为CASL的同构授权库。您可以阅读它在 Aurelia 应用程序中的集成:
https://medium.com/@sergiy.stotskiy/casl-based-authorization-in-aurelia-app-3e44c0fe1703
并通过can
Angular2+ 中的自定义管道以类似的方式完成