2016-01-20 82 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)); 
    } 
}