首页 > 解决方案 > 未设置经过身份验证的用户的会话

问题描述

(我知道以下示例不安全)

我有一个基本的身份验证系统,用户必须在其中输入他的凭据。当输入的凭据正确时,我在我的 laravel 应用程序中设置了一个会话,这表明他可以对 api 执行经过身份验证的请求。我这样做是通过以下方式:

 public function authenticate(Request $request){
    $data = array(
        'name' => $request->input('UserName'),
        'password' =>$request->input('Password'),
        'email' => 'test@test.ch'
    );

    If(Auth::attempt($data)){
        $request->session()->put('isAuthenticated',true);
        $request->session()->save();
        return "success";
    }
    return "wrong";
}

我检查是否允许用户发出请求的中间件:

  public function handle($request, Closure $next){
    if(!empty($request->session()->get('isAuthenticated')) && $request->session()->get('isAuthenticated') === true){
        return $next($request);
    }
    return redirect('/');
}

我的路线:

Route::post('/login', 'UserController@authenticate'); 

Route::group(['middleware' =>['web','check_auth']], function (){
Route::get('/logs','LogController@getAllLogEntries');
Route::get('/logs/{id}','LogController@getLogEntryById');
});

我的问题:

每当用户使用正确的凭据登录时,服务器都会返回“成功”作为响应,但总是将我引导回基本根目录 ('/')。这让我假设会话没有设置。我该如何解决这个错误?

标签: phplaravelsecuritysession

解决方案


推荐阅读