【发布时间】:2018-02-08 09:07:18
【问题描述】:
我对 AngularJS 有疑问。我正在使用 Spring-Security 保护我的 Java Spring REST Web 应用程序。我卡在日志页面上 - http post 使用 AJAX 可以完美运行,但是在使用 AngularJS 时却不行。
jQuery(document).ready(function ($) {
$('#login-form').submit(function (event) {
event.preventDefault();
var data = 'username=' + $('#username').val() + '&password=' + $('#password').val();
console.log(data);
$.ajax({
data: data,
timeout: 1000,
type: 'POST',
url: 'http://localhost:8080/OnlineGameStore/login'
}).done(function(data, textStatus, jqXHR) {
console.log("Done!")
}).fail(function(jqXHR, textStatus, errorThrown) {
alert('Booh! Wrong credentials, try again!');
});
});
});
此 AJAX 代码完美运行,凭据已正确发送到服务器。然而:
angular.module('login').controller('LoginCtrl', function($scope, $http, $location, AuthUser ){
$scope.login = function(){
AuthUser.authenticateUser( $scope.username, $scope.password, $location ).then( function(response){
console.log(response);
});
};
});
angular.module('login').service('AuthUser', function( $http, $location ){
this.authenticateUser = function( username, password, $location ){
var absUrl = $location.absUrl();
console.log(absUrl);
var data = {
username: username,
password: password
};
var config = {
headers : {
'Content-type': 'application/json'
}
return $http.post(absUrl, data, config)
.then(
function(response){
return "Successfully logged!";
},
function(response){
window.alert("Failure!");
});
};
});
这不起作用 - 数据甚至没有正确发送到服务器,而不是提供的用户名和密码,我看到的都是空值(而且我一直得到 401)。 URL 是一样的。有人可以帮我解决这个问题吗?
我也尝试发送裸字符串而不是“数据”对象,它似乎也没有用。
【问题讨论】:
标签: angularjs ajax spring-security