亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

權限設計問題

權限設計問題

千巷貓影 2018-08-04 13:26:04
使用了rbac模式設計權限,現在有種情況。普通a用戶發表一個帖子,a擁有對這個帖子的編輯,刪除,查看權限。普通b用戶,擁有查看權限小編c用戶,擁有對這個帖子的編輯,刪除,查看權限。編輯,刪除,查看權限都有對應的按鈕,有權限就顯示,沒有就不顯示。應該怎么設計呢?例如,編輯按鈕對應的是一個按鈕,操作節點設計成一個,節點的功能有對自己的主題編輯,對他人的主題編輯。
查看完整描述

1 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

通常對自己的數據進行編輯、刪除是不需要進行權限管理的。因為一般來說網站是劃分前后臺的,普通用戶在前臺操作時幾乎不用考慮權限問題,是誰的誰就能管理。
詳細解釋起來很麻煩,你先思考一下,我覺得你主要是陷入誤區了。

我這樣解釋一下:
已 “編輯主題” 和 “編輯我的主題” 為例 用真值表的方式模擬如下:
有 編輯主題 權限 , 有 “編輯我的主題” 權限: T
有 編輯主題 權限 , 無 “編輯我的主題” 權限: T
無 編輯主題 權限 , 有 “編輯我的主題” 權限: 做isAuth檢查并返回 isAuth檢查結果
無 編輯主題 權限 , 無 “編輯我的主題” 權限: F

那么現在取消 編輯我的主題 權限設置,用isAuth檢查代替,真值表為相同結果:
有 編輯主題 權限 , isAuth = T: T
有 編輯主題 權限 , isAuth = F: T
無 編輯主題 權限 , isAuth = T: T
無 編輯主題 權限 , isAuth = F: F

你肯定說了,有的地方就算是用戶通過 isAuth 檢查也不讓他用,此類操作不做isAuth檢查不就行了嗎?

class Controller {

    protected $_allowIfIsAuth = false;

    public function afterDispatch() {

        if (! $user->hasPermission('permission_name')) {

            if (! ($this->_allowIfIsAuth && $user->isAuth('auth_id'))) {

                return false;

            }

        }

        return true;

    }

}


查看完整回答
反對 回復 2018-08-06
  • 1 回答
  • 0 關注
  • 824 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號