我通常傾向於具體的技術問題,但這是一個相當開放的問題,但仍在Q & A範圍內而非討論。如何使用Javascript/PHP/MySQL定義和使用網站級別的「用戶權限級別」變量
它認爲用戶級別權限的最佳實現可以規範Web應用程序中可以做什麼和不可以做什麼。
我將從一個例子開始。我想從數據庫中刪除一部分。我以Jon Doe身份登錄。 Jon Doe具有訪問權限級別1(sql數據庫中的列),因此無法刪除部分。我會使用JavaScript(jQuery)來觸發ajax PHP函數來執行刪除操作。
所以,我想出了幾個選擇,但我相信有更好的東西。
我可以設置一個PHP「用戶級」會議在登錄變量,評估阿賈克斯PHP刪除請求,並返回成功的功能,讓用戶知道,訪問被拒絕。
優點:快速訪問,簡單
缺點:我要運行有關評估成功
的PHP請求和混亂我可以運行PHP預定義的功能,查詢MySQL的阿賈克斯內的用戶權限PHP刪除請求並返回成功功能,並讓用戶知道訪問被拒絕。
優點:評估實時(不一定是關鍵,但將允許權限才能更改,而用戶仍然登錄)
缺點:我要運行有關評估successs
的PHP請求和混亂我可以在運行Ajax PHP刪除請求之前查詢的Ajax Javascript/PHP登錄過程中創建全局的「用戶級」javascript變量(附加到窗口?)。
優點:停止不必要的Ajax請求,非常整齊,容易
缺點:看起來它可能會受到
我期待在整個應用程序評估用戶權限相當數量的,所以我感謝專家們爲解決我認爲是一個相當普遍的問題所做的任何建議。我可能錯過了一些明顯的東西。
謝謝。
** IN RESPONSE **
啊,這很有趣。是的,只有一個加載模板界面,每個內容面板都通過ajax加載。我並沒有真正考慮過將界面按鈕禁用或移除爲「先發制人」。我喜歡首先做一個javascript檢查的想法,同時用PHP側的檢查進行備份。這將避免我必須執行不必要的Ajax調用,如果用戶已經達不到所需的訪問級別。
d/v,因爲你已經說過你'平時'做它的服務器端。你必須*總是*做到服務器端。你不能相信客戶。 – mattmanser 2013-03-13 10:04:11
這實際上取決於他在內部工作的限制。如果他將訪問級別存儲在客戶端,但在對服務器執行任何敏感操作之前進行檢查,他可能會稍微懶散一些。它也取決於信任級別。就我個人而言,我喜歡進行超出理智水平的安全檢查。爲了避免批評,刪除了「通常」。 :-P – thatthatisis 2013-03-13 10:07:38
@thathatisis - 謝謝。我已經添加了對該問題的回覆。你能否詳細說明你的意思是「發送給瀏覽器的狀態變量......」。我想我可能想按照你的建議去做,並先用javascript檢查,然後再用PHP檢查。你將如何去存儲和訪問這個客戶端?我對全局變量有一些想法,但我對PHP有更多的經驗。也許我可以將它放在UI靜態區域的隱藏字段中? – 2013-03-13 14:41:33