0

簡単な質問があります。多くのコンポーネントに共通の関数を挿入するにはどうすればよいですか。

add-users というコンポーネントがあり、これを管理者だけが見られるようにしたいと考えています。このために、すべてのユーザーに一連の権限を追加し、ユーザーがそれらを見る権利を持っているかどうかを確認する共通機能を多くのコンポーネントに挿入したいと考えています。バックエンドで別のチェックが行われるため、ハッカーを心配する必要はありません。ユーザーが自分自身にアクセス許可を追加しても、管理機能を使用することはできません。

例:

<add-users [required-permissions]></add-users>
4

2 に答える 2

1

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>

これが誰かを助けることを願っています!

于 2016-08-20T21:11:42.393 に答える