2
我刚刚开始Rails 3.我已经在名为“Logs”的表上使用来自Rails 3的脚手架生成了以下代码。限制url操作返回其他用户记录
下面的'index'函数仅提供与current_user.id(来自存储在会话表中的会话)关联的记录。用户记录仅呈现以下的路径登录的用户= 3(见下面的索引码)
本地主机:3000 /原木
问题:作为用户,我可以查看记录这不是通过手动编辑链接以显示任何其他记录我的记录(即用户= 3):
本地主机:5分之3000
“这是由user.id = 2输入” /日志
寻求解决方案:如何防止手动黑客入侵以防止用户查看其他用户记录?
类LogsController < ApplicationController的
的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
非常感谢ACL的建议。认证与授权明显不同。仍然处于我的初级阶段,Rails和所有我似乎都在阅读Ruby语法和Rails语法之间模糊的东西。我测试了你的代码,它通过阻止url操作起作用。在操作url时,它只显示用户记录。但是,我注意到闪存错误永远不会发生。 – fresh 2011-01-06 13:04:44