使用Spring安全检查和Cors调用Grails REST方法

时间:2015-07-19 23:29:24

标签: rest grails spring-security cors

所以,我有一个简单的保存方法,用于我在我的网站中使用的食物对象,我想能够从我的网站外部创建食物,事情从内部完美地工作但是尝试做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'

由于

0 个答案:

没有答案