2011-06-09 110 views
1

我有點新的軌道,我想要的就是保護用戶個人資料Rails 3中,如何保護和保護控制器和URL

我的意思是,如果用戶登錄1,進入編輯他的個人資料他可以,而且如果他改變URL以用戶#2他們也可以改變他們的信息

本地主機:3000 /用戶/ 2 /編輯

我有點失落,任何幫助將是非常感謝,或者好書/博客的建議

回答

1

作爲身份驗證的一部分,添加一個sessi on variable,session [:user_id] = User.Authenticate(params [:user] [:username],params [:user] [:password)(這是一般模式,您需要添加另一個資源進行身份驗證)。

然後添加一個before_filter函數到您的控制器,並檢查會話[:user_id] == params [:id]。看看這裏:before_filter

0

以防萬一,這是有用的人的好地方,我測試我的應用程序是,當碰到東西,雖然說還沒有登錄用戶無法訪問受限制的內容,一旦用戶登錄,他們可以將網址更改爲另一個用戶ID,例如。

/users/3然後它會顯示用戶的主頁。所以任何用戶都可以看看其他用戶,這不是我想要的。

要解決這個問題,我改變了用戶控制,以確保對這樣的:

class UsersController < ApplicationController

#first call the correct_user function before allowing the show action to proceed

before_filter :correct_user, only: [:show]

...

def show
#do whatever here
end

...

private

def correct_user
@user = User.find(params[:id])
redirect_to(root_path) unless current_user?(@user)
end