我有一个问题,我想尽可能顺利地解决,并尽可能保持安全和灵活!
我有一个网络应用程序,我有2种用户;后端用户(可信用户;管理员!)和客户(前端用户;不以相同方式信任)!它们可以处理数据库中的某些相同数据,但客户只能执行后端用户可以执行的操作的一部分(如Salesforce用户和客户“自助服务门户”)!
我还希望在数据库中为后端用户和客户提供2个单独的表(表名为User和Customer,并且他们都有用户名和密码行)...
我应该使用2种不同的身份验证方法实现这一点,还是应该使用一种身份验证方法并使用角色代替(然后我会跳过2个表,数据库中包含用户名和密码,并让所有人都使用User表)?< / p>
答案 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)
);