不懂是不是tp版本的原因,还是老师给我们自己的一个作业。。

来源:6-14 利用前置中间件处理登录流-拦截器

欸嘿哈

2021-10-28

<?php
namespace app\admin\controller;
use think\facade\View;
class Index extends AdminBase
{
    public function index()
    {
        View::assign("title","后台");
        dump(session(config("admin.session_admin")));//输出当前的session
        return View::fetch();
    }
    public function welcome()
    {
        return View::fetch();
    }
}

上面是老师的代码,老师视频中在退出登录的情况下访问后台页面,会跳转到登录界面,而我按照上面的代码演示,在退出登录的情况下照样能访问后台页面,并且不会跳转。

<?php
namespace app\admin\controller;
use think\facade\View;
class Index extends AdminBase
{
    //判断当前是否登录,否则跳转到登录页面
    public function initialize()
    {
        if(!$this->isLogin()){
            return $this->redirect(url("/login/"));
        }
    }
    public function index()
    {
        View::assign("title","后台");
        dump(session(config("admin.session_admin")));//输出当前的session
        return View::fetch();
    }
    public function welcome()
    {
        return View::fetch();
    }
}

这是我按照Login控制器中的方法,加了个初始化判断,才会跳转到login界面。

<?php
declare(strict_types = 1);//强制类型
namespace app\admin\middleware;
class Auth
{
    public function handle($request,\Closure $next)
    {
        //前置中间件
        if (empty(session(config("admin.session_admin"))) && !preg_match("/login/",$request->pathinfo()) && !$request->controller() !="Verify")
        {
            return redirect((string) url('/login/'));
        }
        $response=$next($request);
        return $response;
        //后置中间件
    }
    public function end(\think\Response $response){
    }
}

还有一个中间件文件中,不需要写【 && !$request->controller() !=“Verify”】条件,验证码也能出来。

写回答

1回答

singwa

2021-11-01

您好。您的TP哪个版本的

0
1
欸嘿哈
6.0.8
2021-11-02
共1条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1465 学习 · 1333 问题

查看课程