isPublic是打破登陆壁垒,可以跳过登陆判断的功能。
在base.php的关系类中,是必不可少的。比如文章控制器,游客可以查看某文章,登陆后依然可以查看此文章。则可以避免同样的代码书写到两处。更好的实现权限控制。
isPublic可以设置为下列三中类型的值
1. bool
2. string
3. array[string,string]
当设置为BOOL类型时,是整个控制器都受到影响的。
当设置为STRING类型时,是字符串值对应的方法受到影响。
当设置为ARRAY[string,string]类型时,代表数组中的每个string对应的方法都将受到影响。
以下就是对isPublic判断的关键代码。
```
/**
* 是否是无需登录即可访问路径
* @param Request $request
* @return bool
*/
public function isPublic(Request $request)
{
if ($this->isPublic === true){
return $this->isPublic;
}else{
if (is_array($this->isPublic)){
foreach ($this->isPublic as $item){
if ($request->action() == strtolower($item)){
return true;
}
}
}elseif (is_string($this->isPublic) && $this->isPublic == $request->action()){
return true;
}
}
return false;
}
```