私は、クライアント側のパーミッションを適用する必要がある簡単なAngular 2アプリを作成しています(もちろん、パーミッションもサーバー側に適用されていますが、ユーザーは見てはいけません。)クライアントサイドパーミッションをAngular 2に適用する
Angularが提供しているすべてのことにはまだ慣れていません。 私はこのような機能を実現するにはどのような方法が受け入れられるのが大好きです。
か、可能ならば、私は以下の撮影したアプローチについていくつかのコメント受けてみたい:
ユーザーがログインすると、彼は例えば、彼が持っている権限のリストを受け取ります
を- READ_POSTS
- EDIT_POSTS
- READ_USERS
- EDIT_USERS
たとえば、ユーザーがアプリの周囲にある編集ボタンを表示するかどうかを判断します。
は、それから私は、ユーザが持っている権限のリストを保持しているUserService
に対する権限を持っているかどうかを確認するディレクティブ(*ngIf
の基本的レプリカ)を作成しました。
これはディレクティブが何をするか、基本的である:
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