今天给大家分享一下thinkPHP框架中我做登录检测的思路和实现方式
首先创建base控制器,其他控制器继承base控制器,在base控制器的构造方法中写登录检测
的代码,这样所有页面加载之前都会经过登录检测的代码。
public function __construct(Request $request)
{
parent::__construct($request);
//登录检测代码
if (!$this->logincheck($request)) {
$this->error('没有登录,无法访问', 'admin/login/login');
}
}
定义一个属性,保存不用登录检测的方法
protected $no_login = ['login/login', 'login/dologin'];
定义一个登录检测方法,构造方法中调用方法就可以了。
这里使用请求对象的controller和action方法获取到当前请求的控制器和方法名(大写),再用字符串处理函数转成小写,拼接斜杠,进行检测就可以了。
这里用的是依赖注入,也可以使用request助手函数
private function logincheck(Request $request)
{
$controller = $request->controller();
$action = $request->action();
$ac = strtolower($controller . '/' . $action);
if (in_array($ac, $this->no_login)) {
//登录页面无需进行监测
return true;
} else {
if (session('userinfo') !== null) {
return true;
}
return false;
}
}
最后,如有需要做网站,或者前端页面的需求,可以联系我