如下:
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()不起作用的解决方法 http://www.5imoban.net/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)); } }