簡體   English   中英

Laravel 5.1:Auth :: attemp()成功,但是Auth :: check()返回false

[英]Laravel 5.1: Auth::attemp() success but Auth::check() return false

我已經在尋找與此相關的問題,但尚未解決。

鏈接1鏈接2鏈接3

  • Auth :: attempt()成功
  • 嘗試在Auth :: attempt()成功之后注冊會話
  • users表上的Remember_token字段始終為null

這是我的代碼:

AuthController:

protected function login(Request $request){
    $result = [];
    $rules = ['email' => 'required|email', 'password' => 'required|alphaNum|min:3'];
    $validator = Validator::make($request->all(), $rules);

    if($validator->fails()) {
        $result['message'] = 'Login Failed';

    }else{
        $userdata = ['email' => $request->email, 'password' => $request->password];
        if (Auth::attempt($userdata, $request->has('auth_remember'))) {
            // dd(Auth::user()); << THIS DATA IS EXIST
            // $request->session()->push('user.id', Auth::user()->id);
            // $request->session()->push('user.name', Auth::user()->name);
            // $request->session()->push('user.email', Auth::user()->email);

            // dd($request->session()->all()); << THIS DATA IS EXIST
            $result['message'] = 'Login successfull. Redirecting ...';
        }else{
            $result['message'] = 'User not found';
        }
    }
    echo json_encode($result);
}

我去http://.../dashboard時有中間件Auth,但是...

  • Auth :: check()返回false
  • $ request-> session()-> has('user')返回false

身份驗證中間件:

    public function handle($request, Closure $next){
      if($this->auth->viaRemember()) return $next($request);

      if($this->auth->guest()){
        if($request->ajax()){
            return response('Unauthorized.', 401);
        }else{
            return redirect()->guest('login');
        }
      }

      return $next($request);
  }
  • 存儲/框架/會話已設置為777
  • 文件會話已生成
  • 應用時區已與服務器設置和數據庫設置匹配

任何幫助,將不勝感激。

為什么要手動將記錄的用戶數據添加到會話中,您可以在嘗試后隨時使用Auth::user()獲取用戶數據

刪除以下行:

$request->session()->push('user.id', Auth::user()->id);
$request->session()->push('user.name', Auth::user()->name);
$request->session()->push('user.email', Auth::user()->email);

並用dd($ request)驗證auth_remember

我想我解決了這個問題。

使用Ajax時Laravel身份驗證不起作用。 只需按照http://laravel.com/docs/5.1/authentication中的文檔進行,一切都應該起作用!

但這很奇怪! 在我的本地主機中,使用ajax進行身份驗證的效果很好,但是當我將其上傳到服務器時卻無法使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM