我正在尝试实现卫星器的本地注册和登录实例。注册(注册)有效(尽管它在使用 POST 发出请求之前使用 OPTIONS 方法“预检”请求)。
现在,问题是当我尝试登录时,我收到 400,“网络”选项卡告诉我我使用了“选项”。我已经查看了这里几乎所有的问题,他们建议我在服务器端设置权限。
因此,以下内容已添加到服务器端,以授予任何请求权限
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Authorization"
但我仍然遇到同样的错误。
这是我的登录 Controller ,位于模态中:
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';
});
谁能帮忙解决这个问题吗?
最佳答案
直接编辑 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':'*/*'}}
关于javascript - 由于 CORS 导致 Satellizer 登录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31452994/