验证未在Laravel 5.2中保留 [英] Auth not persisting in Laravel 5.2

查看:80
本文介绍了验证未在Laravel 5.2中保留的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的身份验证已在登录时执行.

I have my auth doing this on login.

if (Auth::attempt($userdata)) {
    dd(Auth::user()); //this shows the user just fine, 
                      //which proves that the auth driver is working.
    return redirect()->intended('dashboard');
} 

但是,重定向到仪表板后.看来身份验证没有保留.如果我执行dd(Auth::user())甚至只是执行Auth::check(),它将返回null.

However, after redirecting to the dashboard. It appears the auth isn't persisted. If I do dd(Auth::user()) or even just Auth::check() it returns null.

这是路线:

Route::group(['middleware' => ['web']], function () {
     Route::get('test',function(){
       dd(Auth::user()); //returns null
        echo Auth::user()->name; // returns Trying to get property of non-object
     });
});

我在做什么错了?

这件事很奇怪,就是昨晚它在工作.有点神奇地停止了工作.

The weird thing about this is that last night it was working. It kinda just magically stopped working.

推荐答案

解决方案并不明显,特别是来自旧版本的laravel.
感谢这个链接. Auth Session在Laravel 5.2中被杀死
我能够解决它,所以我将发布答案以帮助遇到相同问题的其他人.

The solution to this is not an obvious one, specially coming from older versions of laravel.
Thanks to this link. Auth Session killed in Laravel 5.2
I was able to solve it, so I'll post the answer to help others who encounter the same issue.

原来我是在我的路线上.

Originally I just had this in my routes.

Route::post('app/login', 'Auth\AuthController@doLogin');

Route::group(['middleware' => ['web','auth']], function () {
     Route::get('test',function(){
        dd(Auth::user());// was always returning null
     });
});

但是,要保持登录名不变,我必须这样做

But, to get the login to persist, I had to do this

Route::group(['middleware' =>[ 'web']], function () {
   Route::post('app/login', 'Auth\AuthController@doLogin');
});

Route::group(['middleware' => ['web','auth']], function () {
     Route::get('test',function(){
        echo Auth::user()->name;
     });
});

显然,要呼叫或注册会话的任何路由都需要使用网络"中间件.

Apparently any route thats going to call or register a session needs to employ the 'web' middleware.

这篇关于验证未在Laravel 5.2中保留的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆