客戶端權限我要創建一個簡單的角2的應用程序中,我需要申請的客戶端權限 (不用多說權限也被應用在服務器端,但隱藏其中的組件用戶不應該看到是必要的。)應用在角2
我還不熟悉Angular所提供的一切, ,所以我很想知道爲了實現這樣的功能可以接受哪種方式。
或者,如果可能的話,我很樂意收到有關該方法的一些意見,我已經採取了以下:
一旦用戶登錄時,他收到的權限列表,他有,例如:
- READ_POSTS
- EDIT_POSTS
- READ_USERS
- EDIT_USERS
這些例如,將確定用戶是否應該看到周圍的應用程序的編輯按鈕。
然後我創建了一個指令(基本上是*ngIf
的一個副本),用於檢查用戶是否擁有用戶擁有的權限列表UserService
的權限。
這基本上就是指令的作用:
if (hasPermissions) {
this.viewContainer.createEmbeddedView(this.templateRef);
}
else {
this.viewContainer.clear();
}
而且它的使用方法如下:
<div id="someContainer">
<a *myPermissionDirective="'EDIT_POSTS'">Edit Post</a>
</div>
我的這種方法的主要問題是,它似乎變得醜陋與包含通用組件這應該顯示一些元素和一些不應該。
例如,想象一個名爲listComponent
的組件,我們用它來顯示列表, ,我們將根據您擁有的權限顯示可編輯它們的用戶列表:(目前,您不能編輯其他管理用戶)
- 用戶1編輯 - >
- 管理員1 [不應顯示編輯]
- 用戶2編輯 - >
- 用戶3編輯 - >
在非泛型列表組件,例如UserListComponent
也許我們可以參考用戶特定的權限,但因爲我們使用一個通用的,我們怎麼會知道這些是相關的?: EDIT_POSTS,EDIT_USERS,EDIT_ADMIN_USERS ,EDIT_ARTICLE,EDIT_SYSTEM_SETTINGS等」提前
感謝。
'this._permissionService.hasDefined('EDIT_POSTS')'在頁面刷新時變爲'未定義'。您是否知道此解決方案? – shamila