2010年06月12日 星期六 21:37
rbac就是Role Based Access Control的简称,是用来进行权限控制的。目前做了一个雏型,还不完善。慢慢完善。基本想法:
角色定义
可以分为两种,一种是预定义的,一般是缺省提供,这种定义的角色在判断时需要对传入的用户,甚至其它的参数一起进行判断。而别一种自定义的权限,则简单地通过用户名来判断。缺省提供的角色可以根据上下文参数来判断相对角色。比如一个用户,可以是GroupA的管理员,但不是GroupB的管理员。那么,组管理员的权限其实是动态变化的,它要根据用户所在的组的情况来判断。因此这里不能简单地把角色与用户名关联就完了,而是要动态判断。所以对应这种特殊的角色,处理起来就特殊一些。
通过has(用户,**其它参数)来判断用户是否有相应的角色。
为了管理角色方便,还提供了一个RoleManager的管理类,用于查找角色,添加新的角色。
缺省的角色目前定义在settings.ini中。
权限定义
权限目前也是预定义的,也会在settings.ini中定义。目前不考虑权限的动态生成(因为需要具体的场景才知道如何使用)。一个权限对应多个角色。使用:ok(权限,用户,**其它参数)来判断用户是否有相应的权限。
权限也有一个管理类,用于查询和添加。
同时为了实现在使用前在数据库中就存在预定义好的角色和权限,rbac提供了dbinit.py文件,可以结合另一贴中所说的dbinit命令来使用。它的作用是将在settings.ini定义的角色和权限装入数据库。
Zeuux © 2024
京ICP备05028076号