不懂是不是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哪个版本的
012021-11-02
相似问题