Auth::login (); 在其他控制器获取不到用户信息?

LoginController.php

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function authenticate(Request $request)
    {
        $user = User::find(1);
        dump($user);
        Auth::login($user);
        dump(Auth::user());
    }
}

AdminController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Actives;
use App\Models\Registers;
use Auth;
use Excel;

class AdminController extends Controller
{
    public function actives()
    {
        $user = Auth::user();
        dump($user);
        $user = User::find(1);
        $actives = $user->actives;
        return view('actives',['actives'=>$actives]);
    }
}

没有使用 php artisan make:auth
在 Logincontroller 登录时能打印出 Auth::user (), 但是在 AdminController 里面输出为 null
有大佬知道怎么解决么

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

Auth::login () 后 不要 dump 和 dd 任何东西 也不要 var_dump 用户实例
否则会导致 sessionid 不一致,从而导致新的请求无法获取认证用户
真的心累

6年前 评论
讨论数量: 8

Auth::login () 后 不要 dump 和 dd 任何东西 也不要 var_dump 用户实例
否则会导致 sessionid 不一致,从而导致新的请求无法获取认证用户
真的心累

6年前 评论
leo

目测是没有把路由放到 web 中间件下

6年前 评论

@leo 不太理解什么意思 :joy: :joy:

6年前 评论

@leo
routes/web.php 是这样的

file

6年前 评论

Auth::login () 后 不要 dump 和 dd 任何东西 也不要 var_dump 用户实例
否则会导致 sessionid 不一致,从而导致新的请求无法获取认证用户
真的心累

6年前 评论

@else 我觉得你说的不对。你可以在登录后刷新 sesionid Session::regenerate(); 并不会影响用户的登录。我也不知道你说的这种情况是为什么,但是我发现 session()->getId() 这个值其实是不会变得。他对应的就就是当前用户的 session 文件

6年前 评论

@小龙 刚看了下

file

file

  • dump (Auth::user ()) 导致响应里面没有 set-cookie

file

file

6年前 评论

@else 你这次说的原因或许才对。但是我还是有个疑问,为什么在同一个路有中 dump(Auth::user()) 会没有 set-cookie?即使不打印,直接 Auth::user() 应该也是一样的效果吧?我没有测试。还有,我发现 session()->put(key,value) 的用法也有这个情况,你如果在一个路由中 put 赋值,会发现用户对应的 session 文件是没有这组键值对的,如果在一个路由中赋值后,再去请求,才会有这组键值对,而且也写入了文件

6年前 评论

因为你 dd 等方法提前返回给浏览器拉,然后 session 中间件的 Terminable 方法没有执行

4年前 评论