2016-01-20 106 views
0

如何檢查用戶是否使用angularjs在服務器(而非客戶端)上登錄?angularjs檢查服務器上的授權

我想:

userModel.getAuthStatus = function() { 

     var r = $http({ 
      headers: { 
       'Content-Type': 'application/json' 
      }, 
      url: baseUrl + 'user/auth', 
      method: "POST" 
     }).success(function(response) { 
      // console.log(response); 
      if(response.user){ 
       console.log('login '); 
       var auth = true; 
      }else{ 
       console.log('login is false'); 
       var auth = false; 
      } 
      return auth; 
      //$cookies.put('auth', JSON.stringify(response)); 
     }).error(function(data, status, headers) { 
      //console.log(data, status, headers); 
      //alert(data); 
     }); 

     console.log(r); 
    }; 

在我的服務器端我得到這樣的迴應:

public function checkAuth(Request $request) 
    { 
     if (Auth::check()) { 
      return Response::json(array('error' => false,'user' => Auth::user()),201); 
     } 
     else{ 
      return Response::json(array('error'=>true)); 
     } 
    } 

我希望我的角度getAuthStatus()去到服務器上,如果用戶在返回記錄真正。否則返回false。

+0

控制器方法什麼是問題?你沒有從服務器端的客戶端收到POST嗎? –

+0

不會在您的請求中發送任何數據......這將有所幫助。當提問時應該確定什麼是或者不在工作。您的代碼顯示爲2個環境,沒有問題描述 – charlietfl

+0

問題是console.log(r)給出了http post對象。 「code'Promise {$$狀態:對象} $$狀態:對象 錯誤:(FN) 成功:(FN) __proto__:無極 美中不足的是:(回調) 構造:無極() 最後: (callback,progressBack) then :(onFulfilled,onRejected,progressBack) __proto__:Object 'code – Tupic

回答

0

如果您正在使用的角度,我建議你使用一個控制器功能執行請求

$scope.auth = false; 
$scope.verifySession = function(){ 
    $http.get('/auth/login') 
      .success(function(data){ 
       if(data.auth) $scope.auth = true; 
       else $scope.auth = false; 
      }) 
      .error(function(data){ 
       console.log("Error: ", data); 
      }); 
    } 
$scope.verifySession(); 

在控制器如果您使用Route::controller('/auth', 'AuthController');你不需經過寫我們這樣

public function getLogin(Request $request) 
{ 
    if (Auth::check()) { 
     return Response::json(array('error' => false,'user' => Auth::user()),201); 
    } 
    else{ 
     return Response::json(array('error'=>true)); 
    } 
}