2015-04-05 91 views
3

我試圖刪除基本會話,但它不會刪除。下面的代碼如何刪除Laravel中的會話5

welcome.blade.php

@if(Session::has('key'))    
    {{ Session::get('key')}} 
    <a href="logout">Sign Out</a> 

    @else 
     please signin 

    @endif 
</div> 

我不知道如何刪除會話。下面是我用了一個,但它不工作route.php

Route::get('/logout', function() { 

    $vv = Session::forget('key'); 
    if($vv) 
    { 
     return "signout"; 
    } 
}); 
+0

你應該使用Laravel的內置認證:http://laravel.com/docs/5.0/authentication – lukasgeiter 2015-04-05 21:32:04

+0

你能告訴我要登錄一個例子,註銷 – rockie 2015-04-05 22:05:54

+0

首先閱讀我聯繫的文件,第二在線搜索其他資源(教程,SO問題等),如果您還沒有找到任何東西,請再次問我。作爲開發人員,最重要的技能之一是進行研究並知道在哪裏可以找到信息。特別是對於這些基本問題,在網上很容易找到。 – lukasgeiter 2015-04-05 22:11:57

回答

7

你應該使用這個方法

Route::get('/logout', function() { 
Session::forget('key'); 
    if(!Session::has('key')) 
    { 
     return "signout"; 
    } 
}); 
0

Session::forget()不返回真/假。您可以刪除您的if聲明。請注意,如果您只使用Session中的user鍵存儲當前登錄的用戶,則可以使用Auth::user()來代替。

+0

你能告訴我一個登錄和註銷的例子 – rockie 2015-04-05 22:05:47

+0

這是在官方文檔中有很好的記錄:http://laravel.com/docs/5.0/authentication – 2015-06-07 15:37:11

0

您可以使用包含當前會話的Request參數。這樣,您就可以通過密鑰刪除任何會話值:

use Illuminate\Http\Request; 

Route::get('/logout', function(Request $request) { 
     //Uncomment to see the logs record 
     //\Log::info("Session before: ".print_r($request->session()->all(), true)); 
     if ($request->session()->has('key')) { 
      $request->session()->forget('key'); 
     } 
     //Uncomment to see the logs record 
     //\Log::info("Session after: ".print_r($request->session()->all(), true)); 
     return redirect('/'); 
    }); 

或者你可以在會話中刪除的所有值:

use Illuminate\Http\Request; 

Route::get('/logout', function(Request $request) { 
     //Uncomment to see the logs record 
     //\Log::info("Session before: ".print_r($request->session()->all(), true)); 
     $request->session()->flush(); 
     //Uncomment to see the logs record 
     //\Log::info("Session after: ".print_r($request->session()->all(), true)); 
     return redirect('/'); 
    }); 

參考:https://laravel.com/docs/5.3/session#using-the-session

0
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Controllers\Controller; 

class StudentRecord extends Controller 
    { 

public function logout(Request $req) 
    { 
if($req-session()->has('key'){ 
      $req->session()->forget('key'); 
    return redirect('/'); 
      } 

//或簡單 public function logout(Request $ req) // if($ req-session() - > has('key') $ req->會話() - >沖洗(); }

} 


//Then Do this in your route file 
    Route:get("/logout",[email protected]); 

    <a href=" {{ url(logout)}}">logout</a>