Rails 3:如何限制对ID的访问

时间:2011-09-19 04:37:26

标签: ruby-on-rails-3

这可能很简单;我不太了解Rails。

我的routes.rb中有一个match myController/myAction/myID,它会将超链接定向到正确的页面(使用link_to)。但问题在于:我不希望人们能够自由地修改id参数,通过URL传入任何他们喜欢的内容。

是否有办法可以仅限制对link_to方法的路由的访问?或许还有另一种方法可以解决这个问题,使用传入的隐藏变量参数或什么?

1 个答案:

答案 0 :(得分:2)

用户通过以下网址访问您的网站:/ controller / action /:id对吗?用户可以更改ID,不得查看其他非授权资源。如何在控制器上实现此功能?只返回允许用户访问的那些资源。

例如,假设您使用的是devise

class AController < ApplicationController

  def index
    @resouces = current_user.find_all_by_id params[:id]
  end
end

这样,如果用户试图访问他无权访问的内容,他将收到错误。

希望这会有所帮助,如果没有,请告诉我,我会尽力详细说明。

关于 current_user ,是的,它应该是当前登录的用户,它不必是设计,您可以实现自己的会话处理逻辑,然后创建一个帮助方法来检索当前登录的用户。

关于使用设计,如果您不想实现自己的会话处理逻辑,还需要以下功能:

  • 记住我
  • 已经创建了可以完全自定义的视图
  • 身份验证
  • 授权
  • 密码加密
  • 更多(请查看docs了解更多信息)

然后设计是一个很好的方法。

此外,它总是一个好主意,如果可能的话,作为一个学习练习,实施自己的身份验证和授权层,你不会后悔。

祝你好运

Emmanuel Delgado