框架定义在持久层,除提供ORMapping功能外加点权限控制。ORMapping的代码学习iBatis和ActiveRecord的做法,可使用任意一种,想象中xml应该这样子定义
select c1,c2 from table where c1=:name
调用时类似:
sqlmap.execute("queryTable",name="xxx")
ActiveRecord的类似:
t=sqlmap.select("table",id="1")
t.c1="xxxx"
t.save()#t.delete()...
权限配置:
可以在sqlmap标签上配置权限,如:
....
针对用ActiveRecord的还可以对表中数据的权限进行分配。如某个用户可以对某个表的那些行进行更新或删除,或者对某些行的某写列拥有update权限,其他则一律没有,用户组可继承多个用户组等等。。。
用sqlmap的就只能对每条命令进行限制。
对映射对象的的任何操作如果没有权限则抛出异常。
不知道大家以为如何?
分享到:
2009-04-24 23:24
浏览 1495
论坛回复 / 浏览 (8 / 2407)
评论
8 楼
phyeas
2009-04-25
还是决定在sqlalchemy上进行扩展
7 楼
phyeas
2009-04-25
如果当前用户对某个对象没有更新权限,代码
obj.name=""
就会报异常,在没有执行save之前,保证该对象在python里的值与数据库中一致
6 楼
phyeas
2009-04-25
并不只是对每个sql操作进行权限控制,而是对每个持久化对象进行控制,比如查询出一堆对象,那我就能知道这堆对象里哪些我能改,哪些能查,哪些能删,并且关联其他表的话我还可以知道我能不能关联出这些数据。
5 楼
jjx
2009-04-25
python什么都是对象,所以说应该不是问题吧
比方说你的sqlmap直接就是sqlalchemy的select,insert之类的
queryTable=select([ table ],table.c.c1==bindparam('name'))
为sqlmap 定义权限
queryTable.allow={'group':'group1','user'='xxx'}
写一个query方法
def query(s):
if hasattr(s,'allow'):
#判断执行之类的
4 楼
phyeas
2009-04-25
不过如果大家知道怎么扩展sqlalchemy,使得可以满足权限控制的需求的话请不吝赐教,先谢过了。总比自己从0开始好
3 楼
phyeas
2009-04-25
用xml配置是因为xml具有更好的可读性。
2 楼
phyeas
2009-04-25
我的需求是能在持久层做权限控制。sqlalchemy好像不能满足这个需求吧
1 楼
jjx
2009-04-25
很好奇为什么sqlalchemy不能满足需求,而且使用了python ,还有必要用xml配置吗?