第一个问题拜托,你能解释一下如何用MVC实现最简单的ACL吗?这里是在控制器中使用ACL的第一种方法。<?phpclass MyController extends Controller {
public function myMethod() {
//It is just abstract code
$acl = new Acl();
$acl->setController('MyController');
$acl->setMethod('myMethod');
$acl->getRole();
if (!$acl->allowed()) die("You're not allowed to do it!");
...
}}?>这是一种非常糟糕的方法,它的减号是我们必须在每个控制器的方法中添加ACL段代码,但是我们不需要任何额外的依赖项!下一步是让所有控制器的方法private并将ACL代码添加到控制器的__call方法。<?phpclass MyController extends Controller {
private function myMethod() {
...
}
public function __call($name, $params) {
//It is just abstract code
$acl = new Acl();
$acl->setController(__CLASS__);
$acl->setMethod($name);
$acl->getRole();
if (!$acl->allowed()) die("You're not allowed to do it!");
...
}}?>它比以前的代码要好,但是主要的缺点是.所有控制器的方法都应该是私有的我们必须在每个控制器的_Call方法中添加ACL代码。下一种方法是将ACL代码放入父Controller中,但我们仍然需要将所有子控制器的方法保持为私有。解决办法是什么?最佳做法是什么?我应该在哪里调用ACL函数来决定是否执行允许或不允许的方法。第二个问题第二个问题是如何使用ACL获取角色。让我们想象一下,我们有客人、用户和用户的朋友。用户对查看他的个人资料有限制,只有朋友才能查看它。所有客人都无法查看此用户的配置文件。所以,这就是逻辑.。我们必须确保被调用的方法是配置文件。我们必须检测到这个配置文件的所有者我们必须检测查看者是否拥有此配置文件。我们必须阅读有关此配置文件的限制规则。我们必须决定执行还是不执行配置文件方法。主要问题是如何检测配置文件的所有者。我们可以检测到谁是配置文件的所有者,只执行模型的方法$model->getOwner(),但是ACL没有访问模型的权限。我们如何实现这一点?我希望我的想法是清楚的。对不起我的英语。谢谢。如何在我的WebMVC应用程序中实现访问控制列表?
3 回答
![?](http://img1.sycdn.imooc.com/5458689e000115c602200220-100-100.jpg)
守着星空守着你
TA贡献1799条经验 获得超8个赞
编辑
- 3 回答
- 0 关注
- 372 浏览
添加回答
举报
0/150
提交
取消