1

我正在尝试实现卫星器的本地注册和登录实例。注册(注册)有效(尽管它在使用 POST 进行请求之前使用 OPTIONS 方法“预检”请求)。

现在,问题是当我尝试登录时,我得到一个 400,网络选项卡告诉我我使用了“选项”。我在这里查看了几乎所有的问题,他们建议我在服务器端设置我的权限。

因此,以下内容已添加到服务器端,以授予任何请求的权限

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Authorization"

但我仍然遇到同样的错误。

这是我的登录控制器,在模式内:

angular.module('auth').controller('LoginCtrl',function($rootScope, 
  $scope, $location, $localStorage, $auth, $modalInstance, 
  $modal){

  $scope.formData = {

   email:'',
   password:'',


  };

  $scope.master = {};

    $scope.update = function(user) {
      $scope.master = angular.copy(user);

    };

    $scope.reset = function(form) {
      if (form) {
        form.$setPristine();
        form.$setUntouched();
      }
      $scope.user = angular.copy($scope.master);
    };

  $scope.reset();

  $scope.ok = function () {
    $modalInstance.close();
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };


$scope.login = function(){

   $auth.login({
      email: $scope.formData.email,
      password: $scope.formData.password,
      grant_type: 'password'
  }).then(function(res){
      alert('success, WELCOME ' + res.data.user.email + '!')
  }) .catch(function(err){
        alert(err.message)
  });
};


});

这是我的 app.js:

angular.module('app').config(function($stateProvider, $urlRouterProvider,
     $authProvider, 
    $httpProvider, urls) {

    /* Add New States Above */
    $urlRouterProvider.otherwise('/home');

    $authProvider.signupUrl = urls.BASE_API + '/Register';
    $authProvider.loginUrl = urls.BASE + '/Token';

});

有人能帮忙吗?

4

2 回答 2

1

直接编辑 satllizer.js 的 local.login 和 local.signin 函数就可以了:

 local.login = function(user, redirect) {
      var loginUrl = config.baseUrl ? utils.joinUrl(config.baseUrl, config.loginUrl) : config.loginUrl;
      return $http.post(loginUrl, $.param(user), { headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept':'*/*'}})
        .then(function(response) {
          shared.setToken(response, redirect);
          return response;
        });
};

    local.signup = function(user) {
      var signupUrl = config.baseUrl ? utils.joinUrl(config.baseUrl, config.signupUrl) : config.signupUrl;
return $http.post(signupUrl,  $.param(user), { headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept':'*/*'}})
        .then(function(response) {
          if (config.loginOnSignup) {
            shared.setToken(response);
          } else if (config.signupRedirect) {
            $location.path(config.signupRedirect);
          }
          return response;
        });
    };

基本上将以下内容附加到 $http.post(loginUrl, $.param(user)):

$.param(user), { headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept':'*/*'}}
于 2015-07-28T18:09:50.753 回答
0

在使用 satilizer 配置之前,在 angular js 配置中使用以下配置行:

 $authProvider.httpInterceptor = false;
于 2017-01-27T19:58:03.963 回答