对于前端有 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,所以使用最多可以获得一个没有任何数据的空管理页面,但这是不可避免的。
关于ruby-on-rails - 如何在 AngularJS 和 Ruby on Rails 中实现功能标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187183/