跨模型控制器

版本:1.0.7文件:application\admin\controller\Admin.php
行数:143-145行
QQ截图20171010165713.jpg

这段代码值得商榷
有可能确实存在模型和控制器不相同情况,这样判断直接说非法操作,可能有问题
已邀请:

a616632985

赞同来自:

或者请作者说明下这段代码的意义,我不是很明白,我是遇到问题把这段注释掉就能跑通了,具体为什么还请指教

dolphinphp

赞同来自:

这段代码是获取要操作的是模型还是Db类,只要是用于快速编辑以及内置的启用、禁用、删除等操作,而这些操作是指ZBuilder生成那些。
 
以前这些操作均用Db类来完成的,后来有部分用户反映不够灵活,有些情况是需要用自定义的模型类来完成,所以新版的框架才用了getCurrModel方法来判断当前要用Db类还是模型类。
 
还有一个重要的原因,以前的版本都是在url上传递table来操作某张表,这样做很不安全,会造成跨权限操作,等于可以操作数据库中的任意表。所以新版严格判断当前操作的模块、控制器是否有与表格页面的模块、控制器是否相同,防止跨模块操作。
 
比如我有删除文章的权限,url是cms/document/delete, 那么有心的用户可能会把url上的table值换成admin_user,那么即使该用户没有删除用户的权限,也等于可以删除用户了。
 
当然,也有你说的这种情况,可能需要跨模块操作,那就先注释这段代码。

要回复问题请先登录注册