【问题标题】:Multiple Authentication methods, or implement role based Authentication?多种身份验证方法,还是实现基于角色的身份验证?
【发布时间】:2010-12-31 19:01:08
【问题描述】:

我有一个问题,我正试图尽可能顺利地解决它,并尽可能保证它的安全性和灵活性!

我有一个网络应用程序,其中有两种用户;后端用户(受信任的用户;管理员!)和客户(前端用户;不以同样的方式受信任)!他们确实在数据库中的一些相同数据上工作,但客户只能做后端用户可以做的事情的一个子集(如 Salesforce 用户和客户“自助服务门户”)!

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

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

【问题讨论】:

    标签: authentication roles


    【解决方案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)
    );
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 1970-01-01
        • 2012-12-12
        • 2021-11-22
        • 2019-10-10
        相关资源
        最近更新 更多