我正在使用spring security进行ajax调用登录,但无论如何都会在url中显示用户名和密码。
ex:/?j_username=s&j_password=s
我试图找到我的错误很长一段时间,但我无法看到它。这可能是一个小错误。
这是我的ajax电话;
function performLogin() {
var j_username = $("#j_username").val();
var j_password = $("#j_password").val();
$.ajax({
cache: false,
type: 'POST',
url: "/login",
crossDomain: true,
async: false,
data: { 'j_username': j_username, 'j_password': j_password},
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("x-ajax-call", "no-cache");
}
});
}
Thanks
EDIT:
It is resolved by adding `return false;`
But I am not sure if my approach is good. Here is the update;
'function performLogin() {
var j_username = $("#j_username").val();
var j_password = $("#j_password").val();
$.ajax({
cache: false,
type: 'POST',
url: "/Mojoping2/login",
crossDomain: true,
async: false,
data: { 'j_username': j_username, 'j_password': j_password},
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("x-ajax-call", "no-cache");
},
success: window.location.reload()
});
return false;
}
答案 0 :(得分:1)
它与Ajax调用无关。您没有取消表单提交!
function performLogin() {
var j_username = $("#j_username").val();
var j_password = $("#j_password").val();
$.ajax({
cache: false,
type: 'POST',
url: "/login",
crossDomain: true,
async: false,
data: { 'j_username': j_username, 'j_password': j_password},
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("x-ajax-call", "no-cache");
}
});
return false;
}
然而你要添加事件
onsubmit="return performLogin();
如果您使用jQuery附加事件,则可以使用
function performLogin(evt) {
evt.preventDefault();
...
答案 1 :(得分:0)
我创建了一个jsfiddle来测试你的代码并且无法复制你的bug。 POST请求似乎正常提交(通过chrome dev工具),并且没有出现额外的GET值。
演示:http://jsfiddle.net/5EXWT/1/
出于兴趣,您使用的是哪个版本的jQuery?
{this is just here so i can submit the jsfiddle}