看了在线帮助搜了论坛,感觉还是对spAcl有疑惑。
发布于:2022-01-17 09:50:54
#1 steptt
在index.php中设置开启了权限控制方式后,
'launch' => array(
'router_prefilter' => array(
array('spAcl','maxcheck') // 开启强制的权限控制
)
),
也建立了acl表,针对赋予了权限
aclid name controller action acl_name
40 维修申请 zjweixiu shenqing SPANONYMOUS
59 维修申请 zjweixiu shenqing USER_1
60 维修申请 zjweixiu shenqing GBADMIN
现在的疑问是,用户成功登录后,对C和A是系统自动控制的?还是需要通过 “$useracl = spClass("spAcl")->get(); ”人工判断呢?
如果通过人工判断就没有框架的优势了 我把acl的 “
60 维修申请 zjweixiu shenqing GBADMIN
”删除掉,结果管理员仍然可以访问 zjweixiu/shenqing ,很是疑惑。
2011-04-29 12:12:45
#2 jake
自动判断的
建议是先下载例子代码里体验一下,再行改成自己的
http://speedphp.com/interaction-acl.html
2011-04-29 12:39:44
#3 xpp1000
对了,我想问一个问题,是不是每一个用户登录后,都要给其授权呀,都要spClass("spacl")->set('admin');
,能不能不给他一个权限让他自动从读用户组,然后进行自行判断,通过这个设的权限,是不是写入ACL表中了
2012-01-10 11:29:05
#4 jake
“能不能不给他一个权限让他自动从读用户组,然后进行自行判断,通过这个设的权限,是不是写入ACL表中了”
这句话看的不是很明白。
不过一般而言,每个用户都需要有属于的用户组,无论其状态或者权限,即使是匿名用户组也是同理。就像dz论坛一样,也有访客组之类的。
你可以默认设置一个访客组给每个访问的用户。
2012-01-10 12:43:08
#5 anythink
acl 有强制权限控制 和非强制权限控制 两种模式
前者会对所有访问的控制器方法进行检查,如果数据库的acl_name不是匿名, 该用户的用户组就必须与acl的acl-name一致,否则就报错。
而 非强制控制模式 只有数据库记录的 控制器方法 和用户组 与当前用户的用户组不匹配的情况下 才会报错。
一般OA 会使用强制控制模式 网站会使用 非强制控制模式。
建议继续熟读手册,掌握明白。
2012-01-10 22:27:48