我正在设计一个 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
这个想法是说有人试图在“设备库存”应用程序中执行管理功能。因此,“设备库存”会对身份验证系统说“获取用户名 xxx 和密码 yyy 的用户”。然后它会查看返回的(通过 ActiveResource)User
对象,并检查其roles
数组是否包含Role
名称为“ADMIN”且本身属于Application
名称为“Equipment Inventory”的对象。
或者也许最好去掉applications
表格并有更多的角色,例如,“ equipment_inventory_admin
”、“ equipment_inventory_readonly
”、“ job_tracker_admin
”等。
更重要的是规范化Application实体还是简化表结构?也许在所有打字之后,我刚刚回答了我自己的问题,但我们非常欢迎您提出意见或建议。