angularjs检查服务器上的授权

时间:2016-01-20 19:46:43

标签: angularjs http laravel authentication

如何检查用户是否使用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()转到服务器,如果用户登录则返回true。否则返回false。

1 个答案:

答案 0 :(得分: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));
    }
}