2011-07-13 38 views
0

我讓用戶創建一個配置文件並使用36個字符配置文件ID。 users/profile.ctp文件最初是由Cake製作的users/view.ctp文件。CakePHP:防止用戶訪問其他用戶的視圖和方法

的URL看起來像example/users/profile/3213123-12313-12313-4544534

我想,以防止其他用戶訪問對方的個人資料或編輯網頁:例如成就/編輯

我使用ACL阻止某些操作,但用戶在同一個「組」中具有相同的訪問權限。

如何確保用戶只能訪問其個人資料/方法,並且通過該url訪問其他用戶個人資料的用戶將被重定向到主頁。我應該通過高級ACL來做到這一點,還是我錯過了一些簡單的代碼。

謝謝

回答

1

當您的用戶連接時,他的信息保持在會話中。因此,在您UsersController你可以做這樣的事情:

function profile($user_id){ // let's say that the 36chars is the user's id 
    if($user_id !== $this->Auth->user('id')){ 
     $this->cakeError("error404"); // or redirect to a view saying that he doesn't have access 
    } 

    // ... do your stuff 
} 

也許你需要做同樣的事情在不同控制器的不同方法。您可以創建一個組件來完成此任務,或者在AppController中添加一個方法。

祝你好運!

+0

謝謝,有道理。我還沒有嘗試過。稍後我會發布多遠。 – ChrisDK

+0

我現在正在爲它創建一個組件,因爲我在許多其他地方需要它 – ChrisDK

相關問題