2010-01-02 75 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

我建议你使用一个表,只是设置角色。如果做得好,这将更容易维护。当然,如果他们有共同的领域,如姓名,那么就是这种情况。