用于禁用非授权用户的字段的通用解决方案

时间:2016-08-29 07:52:51

标签: angular authorization

我有一个项目,其客户端语言是Angular 2.我的应用程序有几个页面,所有页面都有不同的权限。例如,我有一个员工页面,一个书籍页面,一个位置页面,一个计时页面等。

每个页面都具有CanEdit和CanView权限。登录用户可能具有位置的CanEdit权限,但他可能没有书籍页面的CanEdit权限。

我想制作一个通用的解决方案,我将在一个地方写,并将适用于所有页面,我不想在所有页面中重复代码。类似于:如果用户具有当前页面的CanEdit权限,则删除所有输入的只读属性,如果他没有CanEdit权限,则添加只读属性。

目前项目中没有任何角色,但我愿意接受建议。

这可以吗?

2 个答案:

答案 0 :(得分:1)

我能想象的最好的解决方案是创建一个具有CanEdit状态和用户CanView的服务。然后,在您的html页面上,使用:

<button *ngIf="userService.CanView">a button</button>

显示/隐藏(事实上,使其存在或不存在)您想要显示的元素

答案 1 :(得分:1)

您可以使用CanView,CanRead等指令以及检查用户是否可以阅读或编辑页面的共享服务来执行此操作。在指令中,如果用户没有CanView权限,您将能够重定向用户,如果他没有CanEdit权限,则可以禁用所有输入