Heim Web-Frontend js-Tutorial Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

Apr 27, 2022 am 10:43 AM
angular

Wie implementiert man die Berechtigungskontrolle in Angular-Projekten? Der folgende Artikel wird anhand von Codebeispielen über die Methode zur Implementierung der Berechtigungskontrolle in Angular-Projekten sprechen.

Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

Im vorherigen Artikel haben wir über Winkelkomponentenkommunikation gesprochen. In diesem Artikel werden wir darüber sprechen, ob Sie während der Projektentwicklung auf solche Anforderungen stoßen: Bitte begrenzen Sie den Inhalt, auf den Benutzer basierend auf ihrem Login zugreifen können. 【Empfohlene verwandte Tutorials: „angular Tutorial“】

Hier geht es also um Berechtigungskontrolle.

Für Benutzerberechtigungseinschränkungen verfügen wir im Allgemeinen über die folgenden Verarbeitungsmethoden:

  • Kontrollieren Sie das Benutzeranmeldemenü.

  • Beschränken Sie das Benutzerverhalten.

Wir kombinieren es mit Angular code>, um es zu erklären dieses Thema. <code>Angular 来讲解下这个话题。

菜单路由控制

Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

系统开发的时候,会有很多的菜单,这个时候,就需要后端判断用户的角色,按照用户的权限返回不同的菜单路由。

返回的数据格式需要我们按照自己在 app-routing.module.ts 中编写好的路由路径对应。

比如,我们有路由文件如下:

// app-routing.module.ts

const routes: Routes = [
  {
    path: &#39;user-manage&#39;,
    component: AuthLayoutComponent, // 通过鉴权的组件
    children: [
      {
        path: &#39;&#39;,
        redirectTo: &#39;user&#39;,
        pathMatch: &#39;full&#39;
      },
      {
        path: &#39;user&#39;, // 用户列表
        component: UserComponent
      },
      {
        path: &#39;user/detail/:uuid&#39;, // 用户详情,类似这种不会出现在菜单里面
        component: UserDetailComponent
      },
      {
        path: &#39;department&#39;, // 部门列表
        component: DepartmentComponent
      }
    ]
  },
  // ...
]
Nach dem Login kopieren

在页面中,我们的菜单展示的数据是这样子的:

<!-- demo.component.html -->

<ul nz-menu nzMode="inline" [nzInlineCollapsed]="isCollapsed">
  <li *ngFor="let submenu of menu_data" nz-submenu [nzTitle]="isCollapsed ? &#39;&#39; : submenu.title" [nzIcon]="submenu.icon"
    [nzOpen]="submenu.is_open" (nzOpenChange)="selectMenu(submenu)">
    <ul>
      <li *ngFor="let child of submenu?.children" nz-menu-item nzMatchRouter>
        <a [routerLink]="[&#39;/&#39; + child.url]">{{ child.title }}</a>
      </li>
    </ul>
  </li>
</ul>
Nach dem Login kopieren

定义了一个二级的菜单,拥有下面几个字段:

  • title 字段 - 菜单的标题
  • url 字段 - 菜单的路由,对应 app-routing.module.ts 中的完整的 path
  • icon 字段 - 标题前的小图标,二级标题没有
  • is_open 字段 - 菜单是否展开的标识

此时,后端的菜单接口,应该返回类似下面的数据:

// demo.component.ts

public menu_data:any = [
  {
    title: "成员管理",
    url: "user-manage",
    icon: "user-switch", // 这里是用了 angular ant design 的图标
    is_open: false,
    children: [
      {
        title: "用户",
        url: "user-manage/user",
        icon: undefined,
        is_open: false
      },
      {
        title: "部门",
        url: "user-manage/department",
        icon: undefined,
        is_open: false
      }
    ]
  },
  // ...
]
Nach dem Login kopieren

也许你会有疑问?️:二级标题中都用不上 iconis_open 这两个字段,为啥还要写?

嗯~,读者可以对后端返回提要求,但是为了保持数据的可读性和易操作,还是保留为好...

用户行为控制

用户的行为控制,这个的就很细粒度的行为了。小到控制用户的一个按钮的展示等,但是本质来说,都是对后端接口请求的限制?。比如,你请求一个列表,但是你没有权限,那么你就请求不了,报 401 的错误。

Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

我们可以按照需求,针对用户的不同角色,限定用户不能查看或者其他操作。但是,这样很不合理,用户可以通过 postman

Menü-Routing-Steuerung

Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.

Wenn das System entwickelt wird, wird es viele Menüs geben. Zu diesem Zeitpunkt muss das Backend die Rolle des Benutzers bestimmen und befolgen Benutzerberechtigungen Gibt eine andere Menüroute zurück.

Das zurückgegebene Datenformat muss dem Routing-Pfad entsprechen, den wir in app-routing.module.ts geschrieben haben.

Zum Beispiel haben wir die Routing-Datei wie folgt:

{
  code: 0,
  msg: &#39;ok&#39;,
  results: {
    getUserList: {
     url: &#39;/api/get/user/list&#39;, // 当然,可以按照前后端规定返回,不一定是真实的 url ...
     enable: true
    },
    editUser: {
      url: &#39;/api/edit/:uuid&#39;,
      enable: false
    }
  }
}
Nach dem Login kopieren
Auf der Seite sehen die von unserem Menü angezeigten Daten so aus:

<!-- demo.component.html -->

<button *ngIf="userObj.editUser.enable">Edit</button>
Nach dem Login kopieren
definiert ein Menü der zweiten Ebene mit den folgenden Feldern:

    title – der Titel des Menüs Feld url – die Weiterleitung des Menüs, entsprechend dem vollständigen app-routing.module.ts >path🎜🎜icon Feld – das kleine Symbol vor dem Titel, es gibt keinen sekundären Titel, die Backend-Menüoberfläche sollte Daten ähnlich den folgenden zurückgeben: 🎜rrreee🎜Vielleicht Sie haben Fragen?️: 🎜icon und is_open werden in den sekundären Titeln nicht verwendet. Warum müssen wir diese beiden Felder trotzdem schreiben? 🎜🎜🎜Nun, Leser können Anfragen für Backend-Rückgaben stellen, aber um die Daten lesbar und einfach zu bedienen zu halten, ist es besser, sie beizubehalten ... 🎜🎜🎜Benutzerverhaltenskontrolle🎜🎜🎜Benutzerverhaltenskontrolle, dies ist ein sehr feinkörniges Verhalten. Dies kann so klein sein wie die Steuerung der Anzeige einer Schaltfläche für den Benutzer, im Wesentlichen handelt es sich jedoch um eine Einschränkung für Back-End-Schnittstellenanforderungen. Wenn Sie beispielsweise eine Liste anfordern, aber keine Berechtigung haben, können Sie diese nicht anfordern und es wird ein Fehler 401 gemeldet. 🎜🎜Lassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.🎜🎜uns Je nach Bedarf können Benutzer aufgrund unterschiedlicher Benutzerrollen von der Anzeige oder anderen Vorgängen ausgeschlossen werden. Dies ist jedoch unzumutbar. Benutzer können Anfragen über Tools wie postman initiieren, anstatt das System zu durchlaufen. Daher müssen wir dem Backend eine Reihe von Einschränkungen auferlegen. Wir erhalten die vom Backend zurückgegebenen Schnittstellenberechtigungen, z. B. den Empfang der folgenden Daten: Vergleichen Sie den vom Frontend gespeicherten Inhalt und steuern Sie ihn dann entsprechend den Bedingungen. Die Schnittstelle muss den Zugriff entsprechend einschränken, anstatt nur Frontend-Urteile zu fällen. 🎜rrreee🎜🎜Einfaches Front-End-Urteil: 1. Nicht einfach zu warten 2. Unsicher, Benutzer können browserübergreifend anfragen🎜🎜🎜[Ende]🎜🎜Weitere programmierbezogene Kenntnisse finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie die Berechtigungskontrolle in Angular-Projekten implementiert wird.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lassen Sie uns über Metadaten und Dekoratoren in Angular sprechen Lassen Sie uns über Metadaten und Dekoratoren in Angular sprechen Feb 28, 2022 am 11:10 AM

Dieser Artikel setzt das Erlernen von Angular fort, führt Sie zum Verständnis der Metadaten und Dekoratoren in Angular und erläutert kurz deren Verwendung. Ich hoffe, dass er für alle hilfreich ist!

So installieren Sie Angular unter Ubuntu 24.04 So installieren Sie Angular unter Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js ist eine frei zugängliche JavaScript-Plattform zum Erstellen dynamischer Anwendungen. Es ermöglicht Ihnen, verschiedene Aspekte Ihrer Anwendung schnell und klar auszudrücken, indem Sie die Syntax von HTML als Vorlagensprache erweitern. Angular.js bietet eine Reihe von Tools, die Sie beim Schreiben, Aktualisieren und Testen Ihres Codes unterstützen. Darüber hinaus bietet es viele Funktionen wie Routing und Formularverwaltung. In dieser Anleitung wird erläutert, wie Angular auf Ubuntu24 installiert wird. Zuerst müssen Sie Node.js installieren. Node.js ist eine JavaScript-Ausführungsumgebung, die auf der ChromeV8-Engine basiert und es Ihnen ermöglicht, JavaScript-Code auf der Serverseite auszuführen. In Ub sein

Detaillierte Erläuterung des Angular Learning State Managers NgRx Detaillierte Erläuterung des Angular Learning State Managers NgRx May 25, 2022 am 11:01 AM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Angular-Statusmanagers NgRx und stellt Ihnen die Verwendung von NgRx vor. Ich hoffe, er wird Ihnen hilfreich sein!

Ein Artikel über serverseitiges Rendering (SSR) in Angular Ein Artikel über serverseitiges Rendering (SSR) in Angular Dec 27, 2022 pm 07:24 PM

Kennen Sie Angular Universal? Es kann dazu beitragen, dass die Website eine bessere SEO-Unterstützung bietet!

Wie man PHP und Angular für die Frontend-Entwicklung verwendet Wie man PHP und Angular für die Frontend-Entwicklung verwendet May 11, 2023 pm 04:04 PM

Mit der rasanten Entwicklung des Internets wird auch die Front-End-Entwicklungstechnologie ständig verbessert und iteriert. PHP und Angular sind zwei Technologien, die in der Frontend-Entwicklung weit verbreitet sind. PHP ist eine serverseitige Skriptsprache, die Aufgaben wie die Verarbeitung von Formularen, die Generierung dynamischer Seiten und die Verwaltung von Zugriffsberechtigungen übernehmen kann. Angular ist ein JavaScript-Framework, mit dem Single-Page-Anwendungen entwickelt und komponentenbasierte Webanwendungen erstellt werden können. In diesem Artikel erfahren Sie, wie Sie PHP und Angular für die Frontend-Entwicklung verwenden und wie Sie diese kombinieren

Angular + NG-ZORRO entwickeln schnell ein Backend-System Angular + NG-ZORRO entwickeln schnell ein Backend-System Apr 21, 2022 am 10:45 AM

In diesem Artikel erfahren Sie, wie Sie mit Angular in Kombination mit ng-zorro schnell ein Backend-System entwickeln. Ich hoffe, dass er für alle hilfreich ist.

Eine kurze Analyse der Verwendung des Monaco-Editors in Angular Eine kurze Analyse der Verwendung des Monaco-Editors in Angular Oct 17, 2022 pm 08:04 PM

Wie verwende ich den Monaco-Editor in Angular? Der folgende Artikel dokumentiert die Verwendung des Monaco-Editors in Angular, der kürzlich in einem Unternehmen verwendet wurde. Ich hoffe, dass er für alle hilfreich sein wird!

Eine kurze Analyse unabhängiger Komponenten in Angular und deren Verwendung Eine kurze Analyse unabhängiger Komponenten in Angular und deren Verwendung Jun 23, 2022 pm 03:49 PM

Dieser Artikel führt Sie durch die unabhängigen Komponenten in Angular, wie Sie eine unabhängige Komponente in Angular erstellen und wie Sie vorhandene Module in die unabhängige Komponente importieren. Ich hoffe, er wird Ihnen hilfreich sein!

See all articles