mysql - 多登录区

标签 mysql sql database database-design authentication

用户被分配到一个组 ID。有多个登录区域,例如:前端,后端和控制面板登录。

我想知道我应该将 LoginArea 保存在单独的表中还是其他方法?

例子:

tbl_user
 UserID | firstName | Email | Password | LoginArea | GroupID

 1 , Bill , email@email1.com , passwordhash344, Backend | 2
 2 , Paul , email@email2.com , passwordhash123, Backend | 3

tbl_user
 UserID | firstName | Email | Password | GroupID

tbl_group
GroupID | LoginArea         |    Group_Name
 0      ,      Frontend     ,        Customer  
 1      ,      Backend      ,        Admin
 2      ,      Backend      ,        Staff   
 3      ,      Backend      ,        Sales
 20     ,      ControlPanel ,        Shop

//注意GroupID不是PK

所以如果我想登录后台,我需要先确保我在后台登录。像这样使用 SQL?

SELECT count(*) FROM members 
   WHERE email = 'emailhere' AND
     password = 'password' AND 
     LoginArea = 'Backend'

这只是为了确保客户登录详细信息不会在后端登录区域起作用。

最佳答案

这里有一些事情需要考虑:

  • 是否会出现您会有更多登录区域或只有 3 个登录区域的情况?
  • 是否会出现属于一个组的用户需要对所有 3 个区域或 2 个区域具有登录访问权限的情况?

如果您对这两个问题的回答都是肯定的,那么进行第一个示例设计就有意义了。

tbl_user
 UserID | firstName | Email | Password | LoginArea | GroupID

 1 , Bill , email@email1.com , passwordhash344, Backend | 2
 2 , Paul , email@email2.com , passwordhash123, Backend | 3 

关于mysql - 多登录区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385092/

相关文章:

mysql - 使用 MySQL 5.6 查找多边形内部的长/纬度

php - MySQL 获取 LIKE 和多页搜索的起始编号

sql - 案例陈述中的多列

java - 根据最近 24 小时共享 mysql 获取行

database - 这属于数据库还是代码?

php - 使用 PHP/MySQL 和可选的 JavaScript 配置位置信息

java - 删除数据库中没有的单词

SQL Server : auto-generate records in a range with filtering?

sql - Order By [...] OFFSET [..] FETCH [...] 子句中的 fetch Next 和 fetch First 有什么区别?

MySQL 5.6 错误 1054 : Unknown column in 'field list' on INSERT