Laravel 5.如何保存和收回Session的值

时间:2016-04-25 00:58:52

标签: php laravel laravel-5.2

我在登录用户后,尝试保存会话数据库中的值。我尝试使用此代码验证登录并进入会话。

   protected function login(Request $Request){
       $var = $Request->session()->all();
       return dd($var);   

       $user = Model\Account::where('username',$Request['username'])->first();
       if(isset($user)){
           if (Hash::check($Request['password'], $user->password))
                {
                    $Request->Session()->put('usuarios',$user);
                    return view('aluno/showActivities');
                }
           else{
               return dd('Invalid password.');
           }
       } 
       else{
           return dd('User doesn't exists.'); 
       }
    }

OBS:我使用控制器执行登录。此路由的定义类似于向下的代码。



Route::post('/new/login',['as' => 'authRegister', 'uses' => 'UserController@login',function () {
    return Response::json(['Fail' => true], 404);
}] );




登录验证后,laravel确实将此行保存在数据库中。

Image of database line

他没有保存user_id。我怎么能保存这些信息? 其他问题是我如何收回会话的信息?在方法get中,我尝试使用$ Request-> session() - > get(' usuarios'),但返回null。

var_dump($ user)=



yes. See the result.

object(App\Model\Account)#198 (23) { ["table":protected]=> string(7) "account" ["connection":protected]=> string(5) "mysql" ["fillable":protected]=> array(3) { [0]=> string(5) "email" [1]=> string(8) "password" [2]=> string(8) "username" } ["primaryKey":protected]=> string(2) "id" ["perPage":protected]=> int(15) ["incrementing"]=> bool(true) ["timestamps"]=> bool(true) ["attributes":protected]=> array(8) { ["id"]=> int(4) ["email"]=> string(20) "thiagothgb@gmail.com" ["password"]=> string(60) "$2y$10$yFZDFHH2tr6OeoRtEShSmOsX99TQ7e.o5Tb2mJ7sA4tNZEXr4s3tG" ["username"]=> string(10) "thiagothgb" ["deleted_at"]=> NULL ["created_at"]=> string(19) "2016-04-23 17:20:10" ["updated_at"]=> string(19) "2016-04-23 17:20:10" ["user_id"]=> int(6) } ["original":protected]=> array(8) { ["id"]=> int(4) ["email"]=> string(20) "thiagothgb@gmail.com" ["password"]=> string(60) "$2y$10$yFZDFHH2tr6OeoRtEShSmOsX99TQ7e.o5Tb2mJ7sA4tNZEXr4s3tG" ["username"]=> string(10) "thiagothgb" ["deleted_at"]=> NULL ["created_at"]=> string(19) "2016-04-23 17:20:10" ["updated_at"]=> string(19) "2016-04-23 17:20:10" ["user_id"]=> int(6) } ["relations":protected]=> array(0) { } ["hidden":protected]=> array(0) { } ["visible":protected]=> array(0) { } ["appends":protected]=> array(0) { } ["guarded":protected]=> array(1) { [0]=> string(1) "*" } ["dates":protected]=> array(0) { } ["dateFormat":protected]=> NULL ["casts":protected]=> array(0) { } ["touches":protected]=> array(0) { } ["observables":protected]=> array(0) { } ["with":protected]=> array(0) { } ["morphClass":protected]=> NULL ["exists"]=> bool(true) ["wasRecentlyCreated"]=> bool(false) }




2 个答案:

答案 0 :(得分:0)

试试这个,然后检查你是否得到了会话值。

$user = Model\Account::where('username',$Request['username'])->first();
$Request->Session()->put('usuarios',$user->toArray());
echo "<pre>";
 print_r($Request->Session()->get('usuarios'));
echo "</pre>";
die();

告诉我你的结果

答案 1 :(得分:0)

现在我明白了。我通过以下方式修改控制器:

protected function VerificaSessao(Request $Request){
        if ($Request->session()){
            
            if ($Request->session()->has('usuarios')){
                
                return view('aluno/showActivities');
            }
            else{
                return dd('not have session');
            }
            
        }
        else{
            return dd('not have session');
        }
    }

在其他浏览器上进行访问测试,我查看了结果。它没有重定向到查看“Aluno / showActivities”。这个作品。谢谢你的帮助。祝你有个美好的夜晚