thinkphp的auth权限认证对于做网站来讲是非常常用的一个功能,所以特别写一篇文章来帮助自己更好的记忆,毕竟好记性不如烂笔头!
先来看看auth所需要的三个表:
think_auth_group //用户组表
表内的数据:
id为用户组id
title为用户组名称
status为用户组状态,0为禁用,1为启用
rules为用户组启用的权限规则id
think_auth_group_access //用户组明细表
表内的数据:
uid对应think_user表里的用户id
group_id对应think_auth_group里的用户组id
think_auth_rule //认证规则表
表内的数据:
id:规则id
name:规则唯一标识
title:规则中文名称
status:状态,0为禁用,1为启用
type:是否用condition进行验证,1为默认验证,0为不用condition验证
condition:验证条件,空为存在就验证,不为空则按照此内容进行验证
think_user //用户表
表内的数据:
id为用户id
username为用户名
pass为密码
score为积分
这里由于只是示例,所以设置非常简单,密码也是演示一下,具体设置可以根据自己来,而且如果验证的条件不想放入用户表中,可以另外新建一个表,确定有用户id即可,然后配置的时候使用这个表。
上面是auth的数据表结构,虽然代码很清楚,但可能不太直观,为了更清晰的了解auth的数据表结构情况,下面详细绘制了对应的er图,有图就要更好理解些:
这样基本就能看出验证权限的过程,每个表通过同颜色的属性进行关联以此进行相应的查询,以此进行权限验证!
下面我们再来分析thinkphp的auth类的源码:
Auth类里第一部分是设置受保护的$_config,里面存储的是数组形式的默认auth配置
//默认配置,如果用户没有在config文件中配置auth的相关配置,将会采用以下默认的配置
protected $_config = array(