許可權控制 - PHP許可權管理的問題

來源:互聯網
上載者:User
關鍵字 php 許可權控制
情況如下:
一個添加文章的功能會涉及到兩個方法,比如方法add用來顯示這個添加文章的表單,另一個post方法用來接收提交的表單資料插入資料庫。

那麼問題是我把add方法寫到許可權控制裡面,在後台可以管理一個角色是否可以提交表單,add這個方法的頁面確實可以通過許可權阻止顯示表單這個頁面,但是還有一個post方法就不知道如何做到許可權的控制,因為我都是在父控制器裡做的判斷,根據當前訪問的方法名做的統一驗證,並不是每個方法都去寫驗證,而且一個添加文章的許可權又不好在後台顯示兩個方法讓去選擇,請問如何解決這個問題?(在add方法裡面寫判斷是否是post來處理這兩個邏輯感覺不合適,因為如果邏輯比較複雜的話,代碼不好組織,即便方便處理,也可能該功能還會有調用第三個方法第四個方法,還有ajax的許可權)謝謝

回複內容:

情況如下:
一個添加文章的功能會涉及到兩個方法,比如方法add用來顯示這個添加文章的表單,另一個post方法用來接收提交的表單資料插入資料庫。

那麼問題是我把add方法寫到許可權控制裡面,在後台可以管理一個角色是否可以提交表單,add這個方法的頁面確實可以通過許可權阻止顯示表單這個頁面,但是還有一個post方法就不知道如何做到許可權的控制,因為我都是在父控制器裡做的判斷,根據當前訪問的方法名做的統一驗證,並不是每個方法都去寫驗證,而且一個添加文章的許可權又不好在後台顯示兩個方法讓去選擇,請問如何解決這個問題?(在add方法裡面寫判斷是否是post來處理這兩個邏輯感覺不合適,因為如果邏輯比較複雜的話,代碼不好組織,即便方便處理,也可能該功能還會有調用第三個方法第四個方法,還有ajax的許可權)謝謝

沒法兒說,整體的邏輯很混亂。
如果你是RESTful應用,那麼不存在這個問題,所以肯定不是RESTful。那就沒必要把post獨立出來,自然就沒有你這種困擾了。例如你可以這樣解決:

public function addAction() {    if ($this->getRequest()->isPost()) {        $this->_addHandle();    }}

不知道你現在處在什麼階段,其實跳過許可權問題,如果post的資料不合法的時候怎麼辦?此時你需要add的視圖並附加錯誤資訊,post再調用add一次?

補充答案:
RESTful的時候通常只返回json資料,所以在post資料的時候並沒有請求表單這個使用權限設定,例如
列表 GET::/articles
詳情 GET::/articles/:id
建立 POST::/articles
編輯 PUT::/articles/:id
刪除 DEL::/articles/:id
當然也可以再自訂其它請求,和問題無關。

對於普通訪問中的ajax請求處理,看你使用的架構了,通常類似以下邏輯

public function addAction() {    if ($this->getRequest()->isPost()) {        //提交處理    }    //預設處理,如擷取關聯資料等    //最後進行ajax識別    if ($this->getRequest()->isXMLHttpRequest()) {        return $this->json();//用json方式輸出結果    }    return $this->render();//用正常方式輸出結果}

你可能需要對所使用的架構更熟悉一些才好有整體的把控,建議github上找一個與你使用的技術對應的網站源碼看看,看看他們怎麼處理這種請求的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.