如何根据经过身份验证的用户的角色调整RESTful服务驱动的angular2前端

时间:2017-05-28 08:04:45

标签: angular authentication frontend

我在Angular 2中开发了一个webapp,由一组RESTful服务支持。这些RESTful服务都是安全的,每个端点都需要具有一个或多个用户角色的经过身份验证的用户。不同的服务可以有不同的角色。

要使用这些服务,webapp首先对用户进行身份验证,然后在每个请求中向服务发送收到的JWT令牌。此令牌包含有关用户的所有信息,例如用户名,角色等。

现在,我怎样才能轻松地在我的webapp中提供 only 这些元素,这些元素是已登录的旅馆用户所接受的。有没有标准的方法呢?或者有没有最好的做法?我想尽可能避免在我的webapp中硬编码。

2 个答案:

答案 0 :(得分:1)

这取决于您认为的特征元素。很少(甚至更多)方法。

  • 根据JWT内容显示/隐藏。这可以通过类似FeatureService方法的isFeatureAvailable等服务来完成。然后你可以使用ngIf来显示/隐藏模板中的元素,甚至可以在代码中进行条件检查。
  • 如果你使用延迟加载并且每个功能都在他们自己的延迟加载模块中,你可以使用路由器的canActivate功能来阻止加载所选功能

希望有意义

答案 1 :(得分:0)

如果我必须这样做,那么我会将屏幕划分为businessEntities和特权。应该有一个REST API,它将根据登录用户的角色,向Angular UI发送有效BusinessEntities和Privileges的组合。根据此信息,您可以在屏幕上显示/隐藏组件。 businessEntity可以是按钮,表单,文本框等,权限可以是读/写等。

如果它是一个小型应用程序,那么有效businessEntity / privilege组合的所有这些信息都可以直接进入JWT以加速应用程序。但是如果我们有很多这样的组合,那么JWT将是巨大的,并且不推荐这种方法。

当然可以有更好的方法,这只是我的方法。

希望它有所帮助。