定义了一个构造函数,代码如下:
<?php
namespace app\controller;
use app\BaseController;
use think\facade\Log;
use think\facade\Session;
class Admin extends BaseController
{
public function __construct()
{
Log::debug('Checking admin session');
// 判断是否登录
if(!session('?admin')){
Log::debug('session not found');
// 未登录,跳转到登录页
return redirect('/admin/login');
die;
}
}
public function index()
{
return view();
}
public function login( )
{
return view();
}
}
但是发现return redirect(‘/admin/login’)不生效,特意加了die也一样无法执行。
通过了解,发现这里需要手动调用执行,也就是执行当前响应对象的send方法输出。
修改后的代码如下所示:
<?php
namespace app\controller;
use app\BaseController;
use think\facade\Log;
use think\facade\Session;
class Admin extends BaseController
{
public function __construct()
{
Log::debug('Checking admin session');
// 判断是否登录
if(!session('?admin')){
Log::debug('session not found');
// 未登录,跳转到登录页
return redirect('/admin/login')->send();
die;
}
}
public function index()
{
return view();
}
public function login( )
{
return view();
}
}
再次访问,重定向即可生效。