我在Angular 2中开发了一个webapp,由一组RESTful服务支持。这些RESTful服务都是安全的,每个端点都需要具有一个或多个用户角色的经过身份验证的用户。不同的服务可以有不同的角色。
要使用这些服务,webapp首先对用户进行身份验证,然后在每个请求中向服务发送收到的JWT令牌。此令牌包含有关用户的所有信息,例如用户名,角色等。
现在,我怎样才能轻松地在我的webapp中提供 only 这些元素,这些元素是已登录的旅馆用户所接受的。有没有标准的方法呢?或者有没有最好的做法?我想尽可能避免在我的webapp中硬编码。
答案 0 :(得分:1)
这取决于您认为的特征元素。很少(甚至更多)方法。
FeatureService
方法的isFeatureAvailable
等服务来完成。然后你可以使用ngIf
来显示/隐藏模板中的元素,甚至可以在代码中进行条件检查。canActivate
功能来阻止加载所选功能希望有意义
答案 1 :(得分:0)
如果我必须这样做,那么我会将屏幕划分为businessEntities和特权。应该有一个REST API,它将根据登录用户的角色,向Angular UI发送有效BusinessEntities和Privileges的组合。根据此信息,您可以在屏幕上显示/隐藏组件。 businessEntity可以是按钮,表单,文本框等,权限可以是读/写等。
如果它是一个小型应用程序,那么有效businessEntity / privilege组合的所有这些信息都可以直接进入JWT以加速应用程序。但是如果我们有很多这样的组合,那么JWT将是巨大的,并且不推荐这种方法。
当然可以有更好的方法,这只是我的方法。
希望它有所帮助。