2010-02-23 131 views
1

嗨Sitepoint嚮導人,如何限制用戶訪問對象?

假設我們有一個具有多個用戶和各種對象的管理應用程序。我想要做的就是控制對象本身的訪問權限 - 也就是說,它對於一種類型的用戶來說是一種行爲方式,對其他用戶來說則是另一種方式。例如...

導演Mike可以覆蓋接收用戶Sally的註冊日期。人們會認爲邁克可以在過去或未來設定任何日期。然後我們有Payroll用戶Steve,他也可以修改Sally的註冊日期,但僅限於過去一年前(例如)一年前的日期。香料的東西,那麼我們的人力資源經理瑪麗誰也可以修改Sally的註冊時間,但僅限於從2007年正是6月23日的日期,直到從現在1個月...

我如何編程訪問限制,以便在前端,表單控件受限於最小和最大日期,並在後端,驗證器檢查輸入的日期以確保它在這些日期之間?我顯然需要能夠調整每個用戶類型的最小和最大日期。其他對象可能會有不同的參數 - 例如,折扣字段上的最大金額或加班時間的一週中的某幾天。

我以不同的方式提出了這個問題,但每次遇到執行困難。我目前正在開發它作爲一個PHP/MySQL基於Web的應用程序,但其他平臺的想法和意見非常受歡迎!這一次,我正在看第一原則,所以不管你的背景是什麼,如果你有任何想法,請讓我知道!你甚至稱這種類型的訪問控制...?

+0

如果您的問題已解決,請將sur標記爲已回答。 – ALOToverflow

回答

1

根據應用程序的基礎,您可以在應用程序的開始處要求憑據,並根據需要訪問的用戶,可以加載包含不同設置的不同xml文件。

至於安全問題,請確保用戶不能訪問不同的xml文件。

編輯:
由於您使用MySQL,你可以做這樣的事情。
比方說,您有一個包含這些字段的用戶表:UserId,UserName,RestrictionId。
並使用如下所示的限制表:RestrictionId,FieldName,FieldCondition。

這樣,在您的php應用程序中,當用戶通過身份驗證時,您可以在字段上獲取正確的「限制」並將其應用於您的代碼中。如果碰巧你有多個字段需要不同的規則,那麼你可以簡單地使用正確的RestrictionId來添加它們。

該DB設計是遠遠不夠完善,我敢肯定,你可以做的更好

+0

你有沒有指向xml文件結構的例子的鏈接?我可能會使用數據庫,但原理是一樣的。謝謝 – boatingcow

+0

爲數據庫添加了一個exmample。 – ALOToverflow

+0

感謝您的編輯 - 如果我能在某個地方看到這種類型的東西,我會感覺更舒服 - 您是否知道任何腳本,框架,應用程序已經這樣做,以便我可以檢查它? – boatingcow

0

因爲,你已經在使用MySQL數據庫。您可以在數據庫本身中維護UserRole主表的詳細信息。根據登錄加載用戶角色數據,然後您可以輕鬆驗證用戶所做的更改。

+0

感謝您的回覆 - 您是否有任何關於角色數據如何存儲的指示?我習慣布爾類型允許/拒絕在我的數據庫,所以我怎麼能存儲允許/拒絕和不同的東西「-1年」,「2007-06-23」,「<£50」在我的數據庫? – boatingcow