Laravel中间件创建重定向循环

时间:2019-10-23 12:05:14

标签: php laravel

我正在使用内部API在Laravel中进行身份验证,并且创建了一个中间件来测试用户是否使用会话登录。中间件可以重定向到登录路由,但是一直尝试重定向,直到看到 ERR_TOO_MANY_REDIRECTS 。这是我第一次使用不同的身份验证方式,删除了以前使用的 guest auth 中间件。

这是我的路线:

Route::get('/login', 'ApiController@index')->name('login')->middleware('psa');
Route::post('/logout', 'ApiController@destroy')->name('logout');
Route::post('/auth', 'ApiController@login')->name('psaAuth');

中间件:

public function handle($request, Closure $next)
    {
        if(! $request->session()->exists('login')){
            return redirect('/login');
        }else{
            return redirect('/');
        }

        return $next($request);
    }

有任何想法为什么会这样?

1 个答案:

答案 0 :(得分:1)

由于您仅将psa的中间件应用于/login,因此您的代码应类似于以下内容

public function handle($request, Closure $next)
{
    if($request->session()->exists('login')){
        return redirect('/');
        // If session exist, take him to home page
    }

    // Else let him stay in the login page for login.
    return $next($request);
}