在Rails中使用令牌的restrict_access

时间:2013-06-03 21:44:18

标签: ruby-on-rails

我正在生成一个令牌来限制某些人访问某些帖子。一切正常,但它允许任何有令牌的人查看任何帖子而不是他们只允许查看的帖子。 例如,如果为post / 1&仅发布/ 1,用户仍然可以使用相同的令牌访问post / 2。我该如何解决这个问题?

这是我的帖子控制器

before_filter :restrict_access, only: [:show]

这是我的帖子控制器中的* private restrict_access方法*

def restrict_access
  link_token = LinkToken.find_by_token(params[:token])
  head :unauthorized unless link_token
end

提前致谢

获取“无法找到没有ID的帖子”

def restrict_access
  post = Post.find(params[:post_id])
  link_token = LinkToken.find_by_token(params[:token])
  head :unauthorized unless link_token
end

1 个答案:

答案 0 :(得分:1)

因为您只检查令牌是否存在,所以输入哪个令牌无关紧要。 我想在你的LinkToken模型中,帖子被保存为外键,过度你无法解决它。

如果是,请尝试类似这样的(从Rails 4开始不推荐使用find_by_x帮助程序) 它们返回单个资源

link_token = LinkToken.where(post_id: params[:id], token: params[:token]).first