2010-01-02 77 views
1

我有一個問題,我試圖儘可能地解決問題,並儘可能保持安全和靈活!多重身份驗證方法,還是實現基於角色的身份驗證?

我有一個網絡應用程序,我有2種用戶;後端用戶(可信用戶;管理員!)和客戶(前端用戶;不以相同方式信任)!他們確實處理數據庫中的某些相同數據,但客戶只能完成後端用戶可以執行的操作的一部分(如Salesforce用戶和客戶「自助服務門戶」)!

我也希望有在數據庫後端的用戶和客戶的2個獨立的表格(表被命名爲用戶和客戶,他們都擁有一個用戶名和密碼行)...

我應該使用2種不同的身份驗證方法實現這一點,或者我應該使用一種身份驗證方法並使用角色來代替(然後我會跳過2個表,我使用用戶名和密碼的數據庫,並讓所有用戶都使用該表)?

回答

1

如果您發現需要最終爲用戶維護多個角色(根據我的經驗發生的情況很多),以下數據庫結構將允許擴展。

CREATE TABLE user (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(120), 
    created_ts DATETIME DEFAULT '0000-00-00 00:00:00' 
); 

CREATE TABLE user_role (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    user_id INT(11) UNSIGNED NOT NULL, 
    role_id INT(11) UNSIGNED NOT NULL 
); 

CREATE TABLE role (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(125) 
); 
1

我建議你使用一個表,只是設置角色。如果做得好,這將更容易維護。當然,如果他們有共同的領域,如姓名,那麼就是這種情況。