游客和用户登录之后,调中间件里的路由报错

1. 运行环境

mac

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

8.5
//: <> (使用 php artisan --version 命令查看)

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

PHP 版本:
7.4
//: <> (使用 php --version 命令查看 php 版本)

php-fpm 版本:
7.4
//: <> (代码里 phpinfo 函数,然后页面访问查看 php-fpm 版本)
//: <> (如不方便使用 phpinfo 函数 ,使用 ps aux | grep php-fpm.conf 命令查)
//: <> ( 看 php-fpm 版本。如有多个,请以 nginx 站点配置为准。)

3). 当前系统

mac
//: <> (期待数值 Windows 10 / Ubuntu 20.4 / CentOS 8 )

4). 业务环境

开发环境
//: <> (期待信息 开发环境生产环境)
//: <> (是否使用负载均衡?请提供相关信息)

5). 相关软件版本

nginx 1.21
mysql 8

2. 问题描述?

业务描述 网站登录分为游客登录和已注册用户登录,两张表 users visitors 用户表 和 游客表 登录使用jwt
auth.php 配置如下

Laravel

Laravel
api路由

Laravel
不管以哪种身份登录完之后,再去调中间件里面的路由都会报错,如果用户登录,去掉中间件auth:visitor 那么就不报错,如果游客登录,去掉auth:api,也不报错
错误如下:

Laravel

3. 您期望得到的结果?

4. 您实际得到的结果?

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

Laravel 多个中间件是与的关系,报错是必然的,你这里正确的写法应该是 auth:api,visitor

2年前 评论
荭尘宝宝 (楼主) 2年前
讨论数量: 4

Route (login) not defined. 命名路由 login 不存在。

2年前 评论
leo

Laravel 多个中间件是与的关系,报错是必然的,你这里正确的写法应该是 auth:api,visitor

2年前 评论
荭尘宝宝 (楼主) 2年前
陈先生

有没有一种可能,你中间件里面的代码是这样的

//app/Http/Middleware/Authenticate.php
if (! $request->expectsJson()) {
      return route('login');
}

你点了退出,但是下一步的行为还是要走过这个中间件。路由就要跳转到 login, 但是呢,你没有定义 login 这个路由。所以 你看到的是 RouteNotFoundException 而不是 AuthenticationException

2年前 评论

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