【问题标题】:Laravel session destroyed on page refreshLaravel 会话在页面刷新时被破坏
【发布时间】:2019-04-25 02:26:48
【问题描述】:

我有一个通过用户身份验证保护的管理面板。一旦我尝试访问它,它就会将我重定向到使用“guest”中间件的登录表单(这是预期的行为)。 一旦我尝试登录,它就会像魅力一样工作,将我重定向到管理仪表板并创建 Auth 对象(我可以检索名称)。 但是,如果我单击面板内的任何链接,或按 F5,它会将我重定向回登录表单。为了测试发生了什么,我从管理面板中删除了“auth”中间件保护,当我尝试检索 Auth::user()->name 属性时它给了我一个错误。

Trying to get property 'name' of non-object

所以我假设它在每次页面刷新时都会破坏 Auth 对象,但我不明白这种行为的来源。 我正在使用默认的 Auth 中间件,以及文档中提供的 LoginController(进行了一些调整):

<?php

namespace App\Http\Controllers\Authentication;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function authenticate(Request $request){
        $email = $request->input('email');
        $password = $request->input('password');
        $remember = $request->input('remember');

        if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
            return redirect()->intended('dashboard');
        }
    }

    public function index(){
        return view('auth.login');
    }
}

管理面板中的所有路由都在我的路由文件中的一个组内:

Route::middleware(['auth'])->group(function () {
    //All of the admin routes here
});

登录路由受“guest”中间件保护,因此没有经过身份验证的用户可以访问登录表单。

请让我发布您认为可能有帮助的任何代码,我对 Laravel 还很陌生,不知道该发布什么。

【问题讨论】:

  • 可能是会话没有持久化。请检查config/session.php 中的driver 是否不是数组。更多信息laravel.com/docs/5.7/session
  • 要使用Auth::user()-&gt;name,您需要使用命名空间Auth; 例如:use Auth;
  • @AdrianHernandez-Lopez driver 设置为 file : 'driver' =&gt; env('SESSION_DRIVER', 'file'),文件实际上位于 storage/framework/sessions 文件夹中。
  • @Patrick 我已经在使用它了。这不是问题,因为它是第一次工作。我登录,它把我重定向到管理页面(它显示用户名,所以它工作正常)。问题是当我刷新页面或尝试导航到不同的路线时,它似乎消除了会话并将我再次重定向到登录表单。
  • 有什么特殊原因不使用默认Auth::routes();和运行php artisan make:auth时生成的默认LoginController

标签: php laravel session laravel-5.7


【解决方案1】:

我解决了这个问题。这只是一个菜鸟的错误。我在链接的 href 属性中有 Auth::logout() 函数,我认为它会在有人单击它时触发。相反,它会在页面加载后立即让我退出,这就是第一次有会话的原因。

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2012-10-16
    • 2014-08-15
    • 1970-01-01
    • 2014-07-02
    相关资源
    最近更新 更多