Laravel会话在页面刷新时被破坏

时间:2018-11-22 11:48:08

标签: php laravel session laravel-5.7

我有一个管理面板,可以通过用户身份验证进行保护。一旦我尝试访问它,它会将我重定向到使用“来宾”中间件的登录表单(这是预期的行为)。 尝试登录后,它就像一个超级按钮一样工作,将我重定向到管理控制台,并创建了Auth对象(我可以检索名称)。 但是,如果我单击面板内部的任何链接,或按F5键,它将把我重定向回登录表单。为了测试发生了什么,我从管理面板中删除了“身份验证”中间件保护,当我尝试检索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
});

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

请让我发布您认为可能有帮助的任何代码,我对Laravel还是陌生的,并且真的不知道要发布什么内容。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。那只是一个菜鸟的错误。我在链接的href属性中使用了Auth::logout()函数,以为它会在有人单击时触发。相反,它在页面加载后立即注销了我,这就是为什么第一次有一个会话。