如下:
Common.php
<?php
namespace app\admin\controller;
use app\BaseController;
use app\admin\model\Admin;
class Common extends BaseController
{
public function initialize()
{
if(!session('userId') && !session('username')){
return redirect(url('login/index'));
}
}
}
需要登录界面继承Common:
<?php
namespace app\admin\controller;
use app\admin\BaseController;
use app\admin\controller\Common;
class Index extends Common
{
public function index()
{
return view();
}
}
为什么redirect方法在initialize初始化函数不起作用,可以查看 ThinkPHP6使用Base公共控制器redirect()不起作用的解决方法 https://5.jimth.com/jiaocheng/thinkphp/2020/0715/3894.html。按照此文章,修改Common.php,即可解决:
<?php
namespace app\admin\controller;
use app\BaseController;
use app\admin\model\Admin;
use think\exception\HttpResponseException;
class Common extends BaseController
{
public function initialize()
{
if(!session('userId') && !session('username')){
return $this->redirectTo(url('login/index'));
}
}
/**
* 自定义重定向方法 重要的操作二
* @param $args
*/
public function redirectTo(...$args)
{
// 此处 throw new HttpResponseException 这个异常一定要写
throw new HttpResponseException(redirect(...$args));
}
}
