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