如何在AngularJS / Rails中最好地实现功能标志?

时间:2015-05-12 09:46:32

标签: ruby-on-rails angularjs

对于前面有Rails Backend和AngularJS的应用程序,如何实现功能标志或者换句话说每个用户的条件功能?

This Video对如何做到这一点有所了解,这看起来很粗糙。

我正在使用Rollout Gem进行此授权。如果功能标志完全在客户端实现,我觉得这将是“不那么安全和强大的禁用/启用功能的方式”

我不能在部分中使用<% if $rollout.active?(:chat, current_user) %>,因为它们不是ERB,而是用作角度模板的HTML页面。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

所以你可以使用JWT。 JWT是一个令牌,您可以使用rails应用程序对用户进行身份验证。想象一下它就像一张酒店卡。根据您支付的金额,您可以访问某些服务或其他服务。它可以让你进入车库或早餐。

要了解技术细节,当用户登录您的应用时,rails会创建其中一个令牌,并且rails可以放置您想要的任何标志,因此您可以发送包含以下内容的令牌:

{user_id: 3, rollout: true, admin: true}

所以在Angular方面,你可以解析那个令牌并激活你需要的部分,就像这样:

<div ng-if="user.rollout"></div>

因此,根据您在令牌中获得的内容,页面的某些部分将会显示。

令牌无法被篡改,因此最终用户无法修改它,因为服务器会拒绝它。

在Angular本身你不能做太多其他事情,任何用户都可以创建一个user对象并将所有标志设置为true,但是由rails API决定用户可以看到什么,所以最大值use get get是一个没有任何数据的空管理页面,但这是不可避免的。

如果您想了解有关JWT的更多信息,请参阅idea和此处examples(包括一个轨道)