2015-04-05 139 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>