【问题标题】:Tips on Performing Rails User Authorization执行 Rails 用户授权的技巧
【发布时间】:2016-05-12 03:39:13
【问题描述】:

我是 Ruby on Rails 开发的新手。目前,我正在创建一个 Web 应用程序,用户可以在其中登录、创建和操作他们自己的“活动”(数据库对象),然后显示在仪表板上。我正在使用设计 gem,但充其量它在不实际使用任何权限的情况下过滤数据库对象。我需要确保仪表板上显示的数据库对象仅特定于当前登录的用户。在仪表板上仅显示登录用户的活动是一个好的解决方案,并确保用户无法访问/查看仪表板上其他任何人的对象。

【问题讨论】:

  • 你试过Cancan吗?
  • 我试过cancan,但我不知道基于角色的授权是否是最好的解决方案。我需要确保每个用户都有一个唯一的角色,并且我假设使用 cancan 为每个用户分配一个新角色会非常复杂。
  • 你可以拥有一个“我只能看到我自己的帖子”的角色,而不需要太多的工作,比如 record.user_id==session_user.id 内置在可以或不能显示的逻辑中。其他角色可能是“查看任何内容,仅编辑我自己的帖子”或“查看和编辑任何内容”
  • 你可以结帐专家宝石
  • 您似乎想多了,根据您的描述,广告系列和用户之间存在关系?如果是这样并且您正在使用设计,只需执行 current_user.campaigns 并将其用作填充网页的数据。

标签: ruby-on-rails ruby database authorization


【解决方案1】:

听起来您的控制器上需要一个 before_filter。我不使用设计,而只是谷歌"devise before action",你会发现很多链接like this one 可能会有所帮助。另一方面,这里有一个excellent tutorial,它展示了如何创建自己的身份验证系统。我建议做两次。 rails guides 也很棒。

更新:

在你的控制器中试试这个

def index
  @user = User.find(params[:id])
   @campaigns = @user.campaigns.all
end

【讨论】:

  • 用户认证不是问题,授权是我坚持的。如果用户没有登录,他根本看不到仪表板,但是当他登录时,他可以看到仪表板以及他的对象和由不同用户创建的所有其他对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多