spAcl扩展该怎么运用呢?

#1 setlt

研究了半天官方的spAcl扩展,可能是本人的基础太薄弱了,还是不知道具体该怎么运用。jake大大,给点思路吧,最好有个详细的教程,也方便了像我这样的初学者,谢谢了。:D

2009-12-26 18:30:03

#2 jake

抱歉哦,我最近也在为了权限控制ACL这个教程在一直烦恼,写了好几次都说不明白。虽然acl用起来非常容易,但是要说个明白并不是很容易的事情。这里只能先提供一下参考:(摘些草稿出来了)spAcl将权限控制分成两类,强制控制和有限控制;
一种是最大程度控制,也就是强制验证权限方能执行操作,比如大部分的后台程序或者企业内部办公系统,除了登录页面外,其他的功能都要登录验证身份后才能使用;另一种是有限程度控制,系统中大部分操作是全部人都能够使用,仅有小部分操作是有权限控制的,例如简单如留言本,任何人都是可以留言的,但是如果是删除留言的操作,那么仅能由留言本的主人才能执行了。



然后要按照acl类内说明的那个SQL一样建表,
[table]
[tr][td]* CREATE TABLE acl
[/td][/tr]
[tr][td]* (
[/td][/tr]
[tr][td]*      aclid int NOT NULL AUTO_INCREMENT,
[/td][/tr]
[tr][td]*      name VARCHAR(200),
[/td][/tr]
[tr][td]*      controller VARCHAR(50),
[/td][/tr]
[tr][td]*      action VARCHAR(50),
[/td][/tr]
[tr][td]*      acl_name VARCHAR(50),
[/td][/tr]
[tr][td]*      PRIMARY KEY (aclid)
[/td][/tr]
[tr][td]* ) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci[/td][/tr]
[/table]

这里分别是id,权限名称,控制器名称,动作名称,角色名称


每条记录的意思就是 某个用户是“角色名称”的角色,他可以执行名为“权限名称”的操作,这个操作的程序对应就是某个“控制器名称”下面的“动作名称”


比如 12 | 删除留言 | control_admin | delete_gb | GBADMIN


这条记录的意义就是 某个角色为“GBADMIN”的用户,拥有这“删除留言”的权限,而这“删除留言”对应的就是contrl_admin下面的delete_gb操作


权限控制的意思也就是当执行到contrl_admin类的delete_gb操作时,将检查当前用户是否拥有“GBADMIN”的角色可以删除留言。


下面的还在思考当中,实在是不好意思,这个东西太难写了。

2009-12-26 21:26:32

#3 setlt

感谢回答了,至少让我明白了一些基本的操作思路。期待你的完整教程!:D

2009-12-26 23:00:57

#4 setlt

好久没来了,又看了一遍回帖,好像又做了补充,感谢jake,希望可以有完整的示例,在这之前,先慢慢研究一下吧。

2010-01-11 11:37:29

#5 xieguolun

想扩展权限呢?如做公文流。

2011-01-14 23:55:53

#6 jake

想扩展权限呢?如做公文流。
xieguolun 发表于 2011-1-14 23:55
先看看
http://speedphp.com/bbs/thread-142-1-2.html而后再考虑如何扩展权限,论坛内有多篇文章是关于扩展spAcl的,可以搜索一下看看

2011-01-15 08:36:18