【发布时间】: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 你需要使用网络中间件,请看我的回答