php頁面訪問時,統一進行許可權驗證的設計

來源:互聯網
上載者:User
訪問|設計|頁面

晚上有人問我關於網站頁面顯示的時候,許可權判斷的問題。於是就又有了這篇文章。

其實這個有很多中的方式來實現。

1,可以在每個頁面中都單獨進行許可權判斷,這個是最福士的方法。
2,可以為每一個最終分頁檔都作一個設定檔,用來進行許可權判斷,當使用者訪問這個頁面的時候,通過一個函數來判斷,是否存在這個檔案。如果存在,就根據檔案的內容進行許可權判斷,如果不存在,就不用進行許可權判斷。
3,是統一作判斷,做一個單獨的函數,通過一定的配置進行許可權判斷。

下面的一個例子是第三種方法,這種方法適合於任何的情況,且比較通用。

步驟一、整理訪問路徑資訊,把需要進行許可權驗證的路徑進行整理,整理成一個列表
步驟二、整理需要進行許可權驗證的分類,為每一種許可權驗證作一個單獨的函數,
步驟三、把 “訪問路徑”和 “許可權驗證函式”的對應關係,按 1:1 寫到一個設定檔或是數組裡面,例如下面的 filter.php 裡面的 $filter 數組
步驟四、做一個驗證函式,解析當前的訪問路徑,進行許可權判斷。

簡述,filter.php是用來包含所以驗證資訊的檔案,authorization()是一個核心的調度函數,請注意看函數裡面的說明,application.php 是一個普通的分頁檔。例子中的函數都沒有具體實現,自己補充吧。

檔案一、filter.php
<?php

$filter = array('/admin' => 'adminLogin',
                '/admin/userAdmin' => 'powerAdminLogin',
                '/myshop' => 'userLogin'
    );

function adminLogin(){
 // return '是管理員嗎'? 'SUCCESS': 'FALSE';
}

function powerAdminLogin(){
 // return '是超級管理員嗎'? 'SUCCESS': 'FALSE';
}

function userLogin(){
 // return '是會員嗎'? 'SUCCESS': 'FALSE';
}

function authorization(){
 global $filter;
 // 取出 並 解析 當前訪問的url路徑,判斷 $filter 裡面是否含有當前要過濾的路徑

 // 例如當前訪問路徑是 http://www.hahawen.com/admin/userAdmin/gogo.php
 // 取出/admin/userAdmin/gogo判斷  $filter 裡面是否含有 這個路徑。
 // 如果沒有就在取出 /admin/userAdmin 判斷  $filter 裡面是否含有 這個路徑
 // 如果有就返回  $filter 中,這個路徑(/admin/userAdmin)對應的值 $value,
 // 實際上這個 $value 就是一個函數的名稱,
 // 這個函數就是用來判斷目前使用者,是否對當前的訪問路徑,有存取權限的函數
 // 通過 $value() 方式調用這個函數,返回 “成功” or “失敗”
 // 如果失敗,就重新定向到錯誤頁面,也可以在 $value() 函數裡面進行相應的處理
 // 如果成功,返回true

    // 例如當前訪問路徑是 http://www.hahawen.com/news/happy/list.php
 // 取出 /news/happy/list 判斷  $filter 裡面是否含有 這個路徑。
 // 如果沒有就在取出 /news/happy 判斷  $filter 裡面是否含有 這個路徑
 // 如果沒有就在取出 /news 判斷  $filter 裡面是否含有 這個路徑
 // 如果還沒有,就表示這個頁面不許要進行許可權驗證。
 // 返回 true
}

?>

檔案二、application.php

<?
 require_once "filter.php";
 authorization();
    //其他的操作。
?>




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.