2011-09-30 70 views
0

使用PHP,如果有關係。如何在Web應用程序中實現用戶和組安全性?

如果您創建擁有用戶和組的網站。你把它放在網絡應用程序中的哪個位置?你只是把一個函數在每個頁面的頂部(僞):

如果有人在一組,然後他們就可以看到這個頁面 或 如果有人在該組中,他們可以看到這個按鈕

那肯定是錯誤的。我不想編輯Web應用程序代碼,只是爲了改變誰可以看到什麼組合。我不知道我應該做什麼或如何實現這樣的事情。

謝謝。

回答

1

在MySQL中,我始終創建這4個表:用戶,user_groups,權限和user_groups_permissions被使用外鍵鏈接。

所以,用戶A可以在用戶組B,其中該用戶組的權限是在user_groups_permissions。現在

,我只是做了INNER這個4個表(或更好,三:用戶,user_groups_permissions和權限)加入,結果是權限的用戶擁有。我們需要的是通過INNER JOIN選擇permissions.key

現在,處理請求之前,我需要檢查客戶端:: has_permissin(「send_post」)返回真還是假。更好的是,每個用戶組相關的功能也是最重要的。

注意:客戶端是在處理請求之前加載所有用戶權限一次的類,然後將該權限用於整個請求生命期,而無需在該請求中多次訪問數據庫。使用靜態方法和$權限屬性這個類,所以你永遠也不需要發送的對象在你的應用程序的類/方法/函數:)

+0

其實,我設計我的應用程序架構更加複雜,我就與動態蛞蝓(那所有頁面什麼WordPress的稱呼它,我也稱它爲slu,,但我從來沒有使用Wordpress),然後,我通過在整個應用程序中調用Client :: has_page_access()來檢查頁面訪問權限,所以我從不需要檢查權限爲每個頁面。但Client :: has_permission($ key)仍然在受限制的函數上調用。此外,沒有直接訪問頁面,所有的url都被重定向到index.php並從那裏進行處理。 – user5483434

0

你可以有一個實用功能,它接受用戶ID和組代碼並返回true或false。 您可以在每個頁面的頂部將該實用程序功能用作僞代碼,並且還可以使用相同的功能在頁面中隱藏或顯示部分。

如果你的Web應用程序是MVC中,在你的控制器嵌入用戶授權的邏輯。