其实这算是一篇水文,最近有点忙有点累,记得没两天更文的今天一看已经过去一周了,刚好新项目上需要使用Auth来控制权限操作,恰巧ThinkPHP最近官方把5.1更新的有点频繁,从5.1.6一口气接二连三的更新到了5.1.11,导致项目没有框架更新的快,汗,丢人。写这篇水文的缘由是升级框架后,莫名发现之前运行正常的Auth报了个奇怪的错误。
在复制粘贴之前做好的Auth类的时候发现了一个错误,如下图所示。
就去翻了下手册和更新记录,原来TP从安全角度对数组查询条件进行了修改。好吧,那只需改下Auth类中的查询条件即可。
整个类文件其实是源自TP3的,移植到T5下,被我修改过了一些内容,代码太长就不截图了,源码直接附在文末压缩包了,如有需要请自行下载。下面简单介绍下如何使用。
集成扩展类
老生常谈的内容了,在extend目录下建一个author目录,把文末压缩包的中类文件丢进去,如果你自定义的其它目录名称,请修改下类文件中的命名空间。
自定义调用函数
多数情况下鉴权会在控制器中方法上应用,但偶尔保不齐要应用在视图上,这样为了前后台都方便调用,在common.php中自定义一个调用函数,如下图。
自定义一个config项
在上图上可以看到其中config助手函数,这里是为了方便过滤超级管理员的,免得每次超级管理员操作还要是查询权限,浪费资源。直接将管理员ID放到自定义配置项中,return一个true回去,方便快捷。
调用鉴权函数
一般写在方法的顶部,由于我们采用的是自定义的函数形式,所以这里不用考虑实例化了。直接贴图。
好了这样就完成了在ThinkPHP5下的Auth鉴权操作。关于权限表怎么弄的?看类文件前面那超级一大串的注释。