所以,我有一个简单的保存方法,用于我在我的网站中使用的食物对象,我想能够从我的网站外部创建食物,事情从内部完美地工作但是尝试做cors我遇到了一些问题:
为了能够执行跨域请求,我安装了Cors插件,安装完成后,cors警报响起,所以我猜它运行良好。
但是,我使用spring安全插件进行身份验证,因此在向/ food / save发送请求之前,我需要发送一个发布请求进行身份验证。
这是我的代码:
$("#createFood").on("click", function(){
authenticate(function(){
createFood();
});
});
function createFood(){
var food = {};
food.name = "Hot dog"
food.price = 5.99
$.ajax({
url: "xxxxxx/food/save",
method: "POST",
crossDomain: true,
dataType: 'json',
data: JSON.stringify(user),
success: function(){
window.alert("Food created");
},
error: function(){
window.alert("There was a problem with food");
}
});
}
function authenticate(onSuccess){
$.ajax({
url: "xxxxxxxx/j_spring_security_check",
method: "POST",
crossDomain: true,
data: {
j_username: "xxxx",
j_password: "xxxx"
},
success: function(data){
window.alert("Auth success");
onSuccess();
},
error: function(){
window.alert("There was a problem with auth");
}
});
}
好的,现在当我发送错误的用户和密码时,我回来作为一个回答spring security auth?login_error = 1页面及其html,如果我发送了正确的用户和密码,我得到了auth页面,而我没有得到认证。
我想用grails更改内容,这样我就可以获得JSON消息而不是html,并且还可以进行身份验证,是否需要一个特殊的Spring安全插件?我该怎么办?
这是我的spring安全插件的配置:
//由Spring Security Core插件添加: grails.plugin.springsecurity.userLookup.userDomainClassName =' com.mysite.User' grails.plugin.springsecurity.userLookup.authorityJoinClassName =' com.mysite.UserRole' grails.plugin.springsecurity.authority.className =' com.mysite.Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/assets/**': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
grails.plugin.springsecurity.failureHandler. defaultFailureUrl = '/main/auth?login_error=1'
grails.plugin.springsecurity.auth.loginFormUrl = '/main/auth'
由于