laravel Auth :: user()身份验证后返回null

时间:2020-09-16 05:32:25

标签: php laravel routes laravel-authentication laravel-authorization

我在控制器中获取Auth :: user()空。使用凭据登录后,我通常会获得经过身份验证的用户数据,但是在我的一个项目中,我没有获得经过身份验证的用户数据。

为便于解释,我正在发布代码段。 在NewLoginController中,我尝试使用凭据尝试登录,当我尝试使用凭据时可以成功登录,并且可以看到管理视图,但是当我尝试使用/ homepage route转到首页时,我得到Auth :: check()false并且无法维护应用程序的流程,而在我的其他项目中,它与我使用的流程相同。

任何人都可以指导我解决此问题吗?

class NewLoginController extends Controller
{
    public function attemptLoginApi()
    {
       
        if (Auth::attempt(['username' => request('username'), 'password' => request('password')])) {
            
            $userType = Auth::user()->user_type;
             return view('admin');
        } else {
         
            toastr()->error('Invalid Credentials', 'Error');
            return back();
        }

    }

}


class HomePageController extends Controller
{

    public function getUserHomepage()
    {
        
        if (Auth::check()) {
            
            return view('admin');
        
        } else {
         
             return view('home');

        }
        
    }
    
}

web.php

Route::get('/homepage', 'HomePageController@getUserHomepage');
Route::post('/loginApi', 'NewLoginController@attemptLoginApi')->name("loginApi"); 

1 个答案:

答案 0 :(得分:0)

我认为您已经忘记使用Auth中间件。将您的homepage路由放入使用Auth中间件的路由组中。参见documentation

Route::group(['middleware'=>'auth'],function () {
    Route::get('/homepage', 'HomePageController@getUserHomepage');
});