5.8.38 路由中使用中间件做token校验,跳转到新路由地址,但原路由中控制器依然向下执行

问题描述:
设置了一个路由群组中,路由群组绑定了校验token的中间件,token失效则回跳转到指定页面
返回了指定页面中内容,但原路由访问页面的程序依然向下执行,感觉像中间件是父进程跳转新页面返回新页面数据,而原来的页面数据则变成了后台执行脚本。

以下是我的部分代码以及结果描述

路由文件

Route::get('logout', function(){
    return [
    'code' => 0,
    'msg' => '已退出登录',
    ];
});
Route::group(['middleware' => 'sale.login'], function($route){
        $route->get('/api/sale/getInfo', 'Api\SaleController@getInfo');
})

控制器

public function getInfo(){
    Log::info('getInfo');
}

当token无效时,返回了logout中返回的结果,但是日志文件中也打印了getInfo。
我现在是想当token失效时,该如何避免getInfo继续执行。

路过的大神们,有过同样经历的,或看过类似的帖子,麻烦发给我一下,谢谢了。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

要具体看下你的中间件怎么写的!

3年前 评论

中间件sale.login

    public function handle($request, Closure $next, ...$guards)
    {
       //校验token有效性
        if(!checkToken($request)) {
            //判断用户未登录就返回退出登录的信息
            return redirect('/logout');
        }
        //如果已登录则执行正常的请求
        return $next($request);
    }
3年前 评论

你控制器写没写构造方法,如果写了是要先走构造方法的,然后在走中间件

3年前 评论
deory (楼主) 3年前
//校验token有效性
        if(!checkToken($request)) {
            //判断用户未登录就返回退出登录的信息
            return redirect('/logout');
        } else {
           //如果已登录则执行正常的请求
           return $next($request);
      }

"这样也不行吗"

3年前 评论
deory (楼主) 3年前
wanzi (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!