多种身份验证方法,或实现基于角色的身份验

时间:2010-01-02 14:16:39

标签: authentication roles

我有一个问题,我想尽可能顺利地解决,并尽可能保持安全和灵活!

我有一个网络应用程序,我有2种用户;后端用户(可信用户;管理员!)和客户(前端用户;不以相同方式信任)!它们可以处理数据库中的某些相同数据,但客户只能执行后端用户可以执行的操作的一部分(如Salesforce用户和客户“自助服务门户”)!

我还希望在数据库中为后端用户和客户提供2个单独的表(表名为User和Customer,并且他们都有用户名和密码行)...

我应该使用2种不同的身份验证方法实现这一点,还是应该使用一种身份验证方法并使用角色代替(然后我会跳过2个表,数据库中包含用户名和密码,并让所有人都使用User表)?< / p>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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)
);