我正在设计一个 RESTful Web 应用程序,它将为其他几个应用程序提供身份验证系统。其他应用程序将通过 HTTP 查询此应用程序并取回描述已验证用户的 XML。
身份验证应用需要跟踪哪些用户被允许在哪些应用上做什么。
我正在制定数据库架构。下面是我的初步设计。 (假设每个表都有一个 id
列。)
applications # The various client apps that will query this auth system.
------------
name
users # Table simplified for discussion
-----
username
password
email
roles
-----
name
application_id
roles_users
-----------
role_id
user_id
这个想法是说有人试图在“设备 list ”应用程序中执行管理功能。因此,“设备 list ”会对身份验证系统说“获取用户名 xxx 和密码 yyy 的用户”。然后它会查看返回的(通过 ActiveResource)User
对象并检查其 roles
数组是否包含名为“ADMIN”的 Role
它本身属于名称为“设备库存”的应用程序
对象。
或者删除 applications
表并拥有更多角色可能会更好,例如,“equipment_inventory_admin
”、“equipment_inventory_readonly
” 、“job_tracker_admin
”等
规范化Application实体还是简化表结构哪个更重要?也许在打字之后我刚刚回答了我自己的问题,但欢迎提出意见或建议。
最佳答案
架构看起来很正常, 你会发送
<login><username>abc</username><password>xyz</password><app>51</app></login>
你回来了
<auth>
<user>
<username>abc</a>
<lastlogin>123456464</lastlogin>
</user>
<app>
<name>Equipment Inventory</name>
<version>3.1.5e</version>
</app>
<roles>
<role>admin</role>
<role>manager</role>
<role>dataentry</role>
</roles>
</auth>
或
<auth><error type="1"></auth>
关于database - 批评我的身份验证系统数据库架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/493334/