Фильтрация данных сайта по ролям в Angular - PullRequest
0 голосов
/ 30 июня 2019

Я хочу использовать роли входа в приложение Angular SPA (все выполняется на стороне клиента) с Spring Security и Spring Boot.Когда пользовательские роли добавляются для ограничения, например, отображения данных, может опытный разработчик отредактировать код, ограничивающий данные на основе роли, и отобразить ограниченный код, нарушающий ограничение роли?

Есть ли способ предотвратить это и обезопаситькод

1 Ответ

0 голосов
/ 30 июня 2019

Попробуйте это:

Вам необходимо создать пользовательскую структурную директиву roleType, которая будет отображать и скрывать данные на основе roleType пользователя.

Демонстрация Stackblitz

roletype.directive.ts

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
import { DataService } from './data.service';

@Directive({
  selector: '[roleType]'
})
export class RoleTypeDirective {

  constructor(private templateRef: TemplateRef<any>, private vcRef: ViewContainerRef, private dataService: DataService) {

  }

  currentRoleType: string = this.dataService.currentRoleType;

  @Input() set roleType(roleType: string) {
    if (roleType.includes(this.currentRoleType)) {
      this.vcRef.createEmbeddedView(this.templateRef);
    }
    else {
      this.vcRef.clear();
    }
  }
}

HTML

<button *roleType="'AMU'">View</button>
<button *roleType="'AM'">Edit</button>
<button *roleType="'A'">Delete</button>

Где A-Admin, M-Модератор и U-обозначает пользователя.

...