接口分为前台api和后台管理端admin,前台登录退出都没事,后台admin登录之后点击退出接口第一次正常退出,之后再点击就会报错

1. 运行环境

1). 当前使用的 Laravel 版本?

8.83.3

2). 当前使用的 php/php-fpm 版本?

PHP 版本:

7.4

3). 当前系统

mac

4). 业务环境

开发环境

2. 问题描述?

接口分为前台api和后台管理端admin,前台登录退出都没事,后台admin登录之后点击退出接口第一次正常退出,之后再点击就会报错,admin路由如下图:

Laravel

api路由如下图:

Laravel
第一次点击退出接口返回成功

Laravel
之后再点击退出就报错:

Laravel
admin退出代码:

Laravel
中间件代码:

接口分为前台api和后台管理端admin,前台登录退出都没事,后台admin登录之后点击退出接口第一次正常退出,之后再点击就会报错

3. 您期望得到的结果?

4. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9

报错的原因是你在未登录的状态下访问了一个只有登录后才能访问的路由,被拦截了,然后 Laravel 为你执行了跳转到 login ,但是你没有定义 login 路由。

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login'); // 这里的代码被执行了
        }
    }
}

我猜你应该没在请求头中设置 Accept:application/json

3年前 评论
荭尘宝宝 (楼主) 3年前

退出登录放在了需要验证登录的中间件中了,退出后校验没有登录,然后跳转 login 路由了,然而没有定义此路由报错了。

3年前 评论
荭尘宝宝 (楼主) 3年前
chowjiawei

if判断当前有登录就退出 没有登录 就只返回退出成功

3年前 评论

logout不用做认证,你第二次不可以是因为你第一次logout了,自然就不给你访问,还有如果你的admin.php路由是属于API的话你要检查一下/Http/Kernel.php文件中配置是不是使用了API的中间件配置,你这个报错是不适用于API的,是WEB用的

3年前 评论
荭尘宝宝 (楼主) 3年前
通尼和它的朋友 (作者) 3年前
通尼和它的朋友 (作者) 3年前

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