0

在具有 3 个级别的登录系统中,有什么更好的方法在数据库和登录系统中创建表?

这三个级别是:“客户”、“附加”和“管理员”。

“客户”将访问您的所有帐户详细信息,您可以注册“附加”。“附加”将只能访问一些细节。“管理员”可以注册新的“客户”。

1)只有一个登录网址并让系统检查用户的级别然后指向正确的页面是否安全?

地点。com/login 如果附加 OR 客户将定向到 -> 站点。com/client 如果管理员将定向到站点。com/管理员

2) 或者最好的方法是为客户端和附加站点创建一个日志文件。com/client/login 和其他管理员站点。com/admin/登录

3) 我想我会创建一个表,其中只包含所有用户的 ID、登录名、密码和级别:客户、附加和管理员,并对该表进行查询以查看用户是否存在以及可用的资源,然后根据 LEVEL 在其他表中查找数据,这是一种安全的做法吗?

4)我还想过使用INNER JOIN对3个表进行扫描,看看用户是否有权访问系统。并且让表中的ca级别数据完全分离。它是一种有效的替代方案吗?

其他想法?备择方案?

4

2 回答 2

1
  1. 如果您愿意,单个登录 URL 就足够了。您应该将用户的授权级别链接到他们的身份验证(他们的登录名、电子邮件等)。一旦他们通过身份验证(登录),您就可以从数据库获得他们的授权并将该信息存储在会话中。用户不能触摸它。

  2. 我认为这没有任何好处,但如果你愿意,你可以这样做。您仍然需要检查每个页面上的授权级别,以确定登录用户是否能够看到该页面。

  3. 这在任何特定方面都不是不安全的,但它似乎具有您可能想要的关系完整性。

  4. 这并没有太大的不同,但是为每个访问级别设置一个单独的表是没有意义的。除非访问能力是互斥的,否则您最多需要两张表(一张用于用户,一张用于级别)。如果它们是互斥的,您将需要第三个表用于用户级映射,但您似乎并非如此。

于 2013-04-16T01:09:13.690 回答
1

这是一个非常开放的问题。你肯定想要#1 而不是#2。您不想维护 2 种登录方法。只需有 1 个登录页面并决定用户在登录后应该去哪里。

说到#3 或#4,我想你会用#3 走得更远。让你的桌子像这样:

ID, login, password, client_permission_level, admin_permission_level

client_permission_level 1 = “附加” client_permission_level 2 = “客户端” admin_permission_level 0 = “非管理员” admin_permission_level 1 = “管理员”

你可以制作一个更复杂的系统,但听起来这会让你开始。而且,您将能够定义更多级别,例如“超级管理员 = 2”或“超级客户 = 3”

于 2013-04-16T01:11:01.273 回答