我目前正在使用Pyramid开发一个小型的Python网站。
但我不知道如何设计权限系统。
该系统应该非常灵活:我必须在许多不同的表之间建立连接。
我想到了创建一个名为PermissionCollection的表,而不是为每个变量编写一个权限表。这样可以使系统更加简洁:
但我不知道如何设计权限系统。
该系统应该非常灵活:我必须在许多不同的表之间建立连接。
我想到了创建一个名为PermissionCollection的表,而不是为每个变量编写一个权限表。这样可以使系统更加简洁:
PermissionCollection:
- permissionCollectionId - 主键
- onType = 枚举("USER","TEACHER","GROUP","COURSE"...)
- onId = 整数
以及Permission表:
- permissionId - 主键
- key
- value
- permissionCollectionId - 外键
我将为源代码中可能存在的所有关系定义标准PermissionCollections,如果用户、课程、教师等具有特殊权限,则会创建新的PermissionCollection并将权限添加到其中。
我很新于Web编程,并不知道这种方法是否有用。或者是否存在类似的方法。我认为Pyramid ACL不是完成此任务的正确工具,对吗?
GRANT
是针对数据库用户的。但是,如果您编写了应用程序来检查权限(基于谁/什么登录到应用程序),那么您也可以将它们登录为特定的数据库用户(通常可以在连接字符串中提供这些信息)。这将有助于审计以及控制访问。 - Clockwork-Muse