【问题标题】:Laravel Auth Session Missing After Redirect to New Page重定向到新页面后 Laravel Auth 会话丢失
【发布时间】:2018-08-22 15:03:36
【问题描述】:

我正在使用 laravel 的 Auth 进行登录过程,并使用我的数据库中的用户名和密码对我的应用程序进行身份验证。这是我的登录功能:

public function doLogin(Request $req) {
    if (Auth::attempt(['email' => $req->email, 'password' => $req['password']])) {
        return redirect('/');
    } else {
        return redirect('/login')->with('statusFail', 'true');
    }
}

我正在创建这样的路线:

Route::group(['middleware' => ['login']], function() {
    /*All my authenticated routes here ..*/
}

Route::group(['middleware' => ['guest']], function() {
    /*All my non-authenticated routes here ..*/
}

而我的中间件是这样的:

客人:

<?php

namespace App\Http\Middleware;

use Closure;
use Session;
use Auth;

class GuestMiddleware
{
    public function handle($request, Closure $next)
    {
        if (Auth::check())
            return redirect('/');

        return $next($request);
    }
}

登录:

<?php

namespace App\Http\Middleware;

use Closure;
use Session;
use Auth;

class LoggedInMiddleware
{
    public function handle($request, Closure $next)
    {
        if (!Auth::check())
            return redirect('/login');

        return $next($request);
    }
}

起初,我可以使用正确的用户名和密码登录,然后在浏览了一些页面后,我的身份验证凭据丢失,并将我重定向回登录。有时,只需重定向 1 个网站,我的身份验证凭据就会丢失。

有人可以帮忙吗?

【问题讨论】:

  • 您在使用web 中间件组吗?该组包含StartSession 中间件。这是处理会话所必需的。您可以使用php artisan route:list 验证,所有需要会话的路由都应该有web 中间件。
  • 不,我不是,我创建了一个新的中间件来处理 Auth 的事情 @DeesOomens
  • 你用的是哪个版本的 laravel??
  • ver 5.2 @Sohel0415
  • @WilliamsPerdana 你需要使用网络中间件,请看我的回答

标签: php laravel


【解决方案1】:

使用web中间件:

Route::group(['middleware' => 'web'], function () {
      ///your routes goes here
      Route::group(['middleware' => ['login']], function() {
                 /*All my authenticated routes here ..*/
       });

      Route::group(['middleware' => ['guest']], function() {
           /*All my non-authenticated routes here ..*/
      });
});

【讨论】:

    【解决方案2】:

    这是错字吗:

    class GuestMiddleware => 两个中间件的名称?

    重命名并相应注册。

    【讨论】:

    • 我在 kernel.php 文件中将 GuestMiddleware 注册为“guest”,将 LoggedInMiddleware 注册为“login”
    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2014-07-20
    • 2017-09-11
    • 2015-01-26
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多