Laravel Auth::Check 判断有问题,请大家帮忙看一看非常感谢!!!!!

@if (Auth::check())
    <a href="{{ route('users.index', Auth::user()->id) }}" >点击返回 “用户首页”</a>
@else
    <a href="{{ route('login') }}">点击返回 “登录页面”</a>
@endif

如上,我在 404 错误页面中添加了上面的判断,来显示正确的目标链接
-
假设用户已经登录,在以下两种情况下,Auth::Check() 判断有些问题:
-
情况 1: www.asdf.com/users/221431234sadsf
此时能显示:点击返回 “用户首页”
-
情况 2: www.asdf.com/221431234sadsf
此时能显示:点击返回 “登录页面”
-
第二种情况,用户也是登录的状态,为什么 Auth::Check() 判断不出来呢???
-
请大家帮忙看看,指点我一下!非常感谢!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
leo
最佳答案

Auth::check() 是基于 Session 的,仅当开启 Session 的时候才能生效,对于第二个 Url 没有与之匹配的路由,也就没有经过 Laravel 的 Session 中间件,所以你需要在 web 中间件包含的路由组里用 Route::fallback() 来定义一个默认的路由来捕获所有的未定义的 url。

5年前 评论
HEPING (楼主) 5年前
HEPING (楼主) 4年前
讨论数量: 3
leo

Auth::check() 是基于 Session 的,仅当开启 Session 的时候才能生效,对于第二个 Url 没有与之匹配的路由,也就没有经过 Laravel 的 Session 中间件,所以你需要在 web 中间件包含的路由组里用 Route::fallback() 来定义一个默认的路由来捕获所有的未定义的 url。

5年前 评论
HEPING (楼主) 5年前
HEPING (楼主) 4年前

翻译:Laravel 5.5 中使用 Route::fallback 方法来处理 404 响应

看到有一个类似的问题,有详细的解决方法,可以参考一下。

Route::fallback(function(){
return view(‘errors.404’);
});

加上此路由即可解决。

5年前 评论

@HEPING 路由参数约束,文档有 路由《Laravel 6 中文文档》

5年前 评论
HEPING (楼主) 5年前

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