【发布时间】:2011-01-06 20:45:15
【问题描述】:
我刚刚开始使用 Rails 3。我使用 Rails 3 的脚手架在名为“Logs”的表上生成了以下代码。
下面的“索引”函数仅提供与 current_user.id 关联的记录(来自存储在会话表中的会话)。用户记录仅以 user = 3 登录的以下路由显示(参见下面的索引代码)
本地主机:3000/日志
问题:作为用户,我可以通过手动编辑 url 以显示任何其他记录来查看不是我的记录(user=3)的记录:
localhost:3000/logs/5 '这是由 user.id=2 输入的'
寻求解决方案:如何防止手动破解 url 以防止用户查看其他用户记录?
类 LogsController
before_filter :login_required
def index @logs = Log.where(:user_id => current_user) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @logs } end
请忽略下面的创建函数中缺少新函数。下面的代码只是为了演示我如何将 user_id 放入“日志”表中
def create @log = Log.new(params[:log]) @log.user_id = current_user.id respond_to do |format| if @log.save format.html { redirect_to(@log)} format.xml { render :xml => @log, :status => :created, :location => @log } else format.html { render :action => "new" } format.xml { render :xml => @log.errors, :status => :unprocessable_entity } end end
【问题讨论】:
标签: ruby-on-rails security ruby-on-rails-3