## 验证器功能说明
验证器 Godok\Org\Auth
验证器提供了用户登录状态保存,用户权限验证,用户及权限信息获取的功能,用户信息保存在session中,session未过期之前一直有效
默认登录后保存了如下信息
~~~
$user=[
'id'=>用户唯一标识,
'username'=>帐号,
'nickname'=>昵称,
'avatar'=>头像url,
'email'=>邮箱,
'phone'=>电话,
'rules'=>[1,5,6,...] /*权限id*/,
'groupids'=>[2,3,4,...]/*用户组id*/
];
\Godok\Org\Auth::user($user);
~~~
**读用户信息**
~~~
\Godok\Org\Auth::user() //读取用户信息$user
\Godok\Org\Auth::user('name') //读取$user['name']
~~~
**写用户信息**
~~~
\Godok\Org\Auth::user( ['name'=>'test'] ) //参数1为数组表示覆盖用户信息:$use = ['name'=>'test']
\Godok\Org\Auth::set('name','test') //写$user['name'] = 'test',第二个参数也可以是数组
~~~
**删除用户信息**
~~~
\Godok\Org\Auth::clear() //清空用户信息
\Godok\Org\Auth::set('name') //删除$user['name']
~~~
**获取用户组信息**
~~~
\Godok\Org\Auth::getGroups(); //获取当前用户的组信息(二维数组:包括 id rules 子键)
\Godok\Org\Auth::getGroups($uid); //获取指定用户的组信息(二维数组:包括 id rules 子键)
~~~
**获取用户组(id)**
~~~
\Godok\Org\Auth::getGroupids(); //获取当前用户的组(一维数组:由id组成)
\Godok\Org\Auth::getGroupids($uid); //获取指定用户的组(一维数组:由id组成)
~~~
**获取用户权限(id)**
~~~
\Godok\Org\Auth::getRules(); //获取当前用户的权限(一维数组:由id组成),继承游客和登录用户组
\Godok\Org\Auth::getRules($uid); //获取指定用户的权限(一维数组:由id组成),继承游客和登录用户组
\Godok\Org\Auth::getRules($groups); //获取传入用户组信息的权限集(一维数组:由id组成),不继承
\Godok\Org\Auth::getRules($groupids); //获取指定组的权限集(一维数组:由id组成),不继承
~~~
**手动验证**
自动验证是验证的url请求,但是有些权限不是通过请求来判断的,那么就需要在业务中手动去判断
>Auth::check($action, $uid)
@$action 匹配权限规则中的action值
@$uid 缺省值是当前登录用户的id
return boolen,验证通过时返回true,否则返回false
参考说明:
用传入的参数到goa_rule表中寻找规则,未找到返回false,找到继续判断用户是否拥有该权限
~~~
Auth::check('edit') //判断:module='' && controller='' && action='edit' && condition = ''
Auth::check('Uer/edit') //判断:module='' && controller='User' && action='edit' && condition = ''
Auth::check('auth/User/edit?type=1') //module='auth' && controller='User' && action='edit' && condition = 'type=1'
//多条用“,”或者“|”隔开,前者是“and”判断,后者是“or”判断
//如:
Auth::check('edit,add,delete')
Auth::check('edit|add|delete')
~~~
>手动验证是url验证的补充,不支持正则表达式
**返回权限菜单树**
>\Godok\Org\Auth::menu($where, $pid)
$where 为可选项
$pid 获取$pid下的子菜单,默认为0,获取所有菜单
*注意:无论传入什么参数,都只能获取到当前用户拥有的权限菜单
返回的权限菜单例子
~~~
Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[title] => 系统设置
[module] =>
[controller] =>
[action] =>
[status] => 1
[ismenu] => 1
[condition] =>
[icon] => fa fa-gears
[listorder] => 0
[children] => Array
(
[0] => Array
(
[id] => 172
[pid] => 1
[title] => 用户管理
[module] => auth
[controller] => User
[action] => index
[status] => 1
[ismenu] => 1
[condition] =>
[icon] =>
[listorder] => 1
)
)
)
[1] => Array
(
[id] => 194
[pid] => 0
[title] => 个人中心
[module] => auth
[controller] => Profile
[action] => index
[status] => 1
[ismenu] => 0
[condition] =>
[icon] =>
[listorder] => 2
)
)
~~~
路由验证未通过会根据请求类型返回一个错误的json数据或者一个错误提示消息
~~~
{
code : -1,
msg : "请登录",
url : "/auth/Login"
}
~~~