【问题标题】:angularjs check authorisation on serverangularjs检查服务器上的授权
【发布时间】:2016-01-21 06:17:17
【问题描述】:

如何检查用户是否使用 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));
        }
    }

如果用户登录返回 true,我希望我的 angular getAuthStatus() 转到服务器。否则返回 false。

【问题讨论】:

  • 有什么问题?您没有在服务器上收到来自客户端的 POST 吗?
  • 不在您的请求中发送任何数据......这会有所帮助。提问时应该确定什么是有效的或无效的。您显示了 2 个环境的代码,没有问题描述
  • 问题是console.log(r) 给出了http post 对象。 'code'Promise {$$state: Object} $$state: Object error: (fn) success: (fn) proto: Promise catch: (callback) constructor: Promise() finally: (callback , progressBack) 然后: (onFulfilled, onRejected, progressBack) proto: Object 'code
  • r$http 返回的承诺对象 .... 如果你想从 getAuthStatus () 返回,请返回该承诺

标签: angularjs http laravel authentication


【解决方案1】:

如果你使用 Angular,我建议你使用控制器函数来执行请求

$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));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2015-03-31
    • 2013-10-05
    • 1970-01-01
    相关资源
    最近更新 更多