我们只是设置了用户可以显示的权限,但是并没有限制用户访问一些其不具备的权限,这样会出现访问漏洞
① 用户会不小心越权访问其他权限。
② 再者也可以通过手动输入控制器、操作方法路由信息进而访问本身一些不存在的权限
以上越权访问非法权限的过程就是“FQ访问”。
解决FQ访问:
对用户访问的每个操作方法都设置过滤功能,被访问的方法必须是用户拥有的权限方法才允许访问。
为了避免开发重复的代码该访问过滤功能要在父类的__construct()构造方法里边实现
这个父类又不能是Controller,这样我们自己开发维护一个AdminController
给后台普通控制器制作一个新父类(文件):
后台所有控制器都继承新父类AdminController:
现在后台全部控制器都继承AdminController
后台控制器的操作方法执行的时候,都会自动调用AdminController的构造方法__construct执行,那么为了一劳永逸、避免编写重复代码,就把用户访问权限控制设置在AdminController的构造方法__construct()里边即可。
具体权限限制的步骤: