ruby-on-rails - 如何在 AngularJS 和 Ruby on Rails 中实现功能标志?

标签 ruby-on-rails angularjs feature-selection

对于前端有 Rails 后端和 AngularJS 的应用程序,如何实现功能标志或每个用户的条件功能?

This Video大致了解了如何做到这一点,这对我来说看起来相当粗糙。

我正在使用Rollout Gem对于本次授权。如果功能标志完全在客户端实现,我觉得这将是“禁用/启用功能的不那么安全和稳健的方式”

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

提前谢谢您。

最佳答案

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

转到技术细节,当用户登录您的应用程序时,rails 将创建其中一个 token ,并且 Rails 可以在其中放置您想要的任何标志,因此您可以发送包含以下内容的 token :

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

因此,在 Angular 方面,您可以解析该 token 并激活您需要的部分,大致如下:

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

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

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

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

如果您想了解有关 JWT 的更多信息,请参阅 idea在这里 examples (包括 Rails 一个)

关于ruby-on-rails - 如何在 AngularJS 和 Ruby on Rails 中实现功能标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187183/

相关文章:

ruby-on-rails - 如何使用 Test::Unit 在全局 stub http 请求?

ruby-on-rails - 使用 Hadoop 的 Rails

javascript - 即使满足条件,ng-show 也不起作用

python - 如何从 Scikit-learn 中的拟合模型获取属性列表?

memory-management - glmulti 超大候选集

ruby-on-rails - delayed_job -i 通过 cron 脚本通过 ruby​​ 停止之前的进程后将不会启动

javascript - 如何自动验证优惠券并调整价格?

php - 使用 AngularJS 将数据插入数据库

javascript - HTTP 预检 (OPTIONS) 请求仅在 IE 中失败

Python:如何正确处理 pandas DataFrame 中的 NaN,以便在 scikit-learn 中进行特征选择