使用Grails Spring Security Rest插件获取400个错误请求

时间:2016-03-01 13:33:29

标签: spring rest grails

我正在尝试grails restful spring security rest插件。 我正在使用Grails 2.5.2和spring-security-rest:1.5.2。 我无法使用以下ajax调用进行登录。我得到了400个不好的请求。但是如果我尝试使用CURL命令就可以了!我不明白什么是错的。

那是ajax的帖子:

var config = {
            type : 'POST'
            ,url : '/api/login'
            ,data : {username:"xxxx",password:"xxxx"}
            ,async : false
            ,dataType : 'JSON'
            ,contentType: "application/json;charset=utf-8"
            ,success: function(response) {
                console.dir(response);
            }
            ,error : function (response) {
                console.dir(response);
            }
        }

        $.ajax(config);

Config.groovy中的Spring rest插件配置是:

grails.plugin.springsecurity.filterChain.chainMap = [
    '/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter',  // Stateless chain
    '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'                                                                          // Traditional chain
]

grails.plugin.springsecurity.rest.login.active=true
grails.plugin.springsecurity.rest.login.failureStatusCode=401
grails.plugin.springsecurity.rest.token.validation.active=true

这是我的curl命令:

curl -i -X POST -H "Content-Type: application/json" -d '{"username":"xxxxx", "password":"xxxx"}' http://localhost:8080/api/login

那就是回应:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json;charset=UTF-8
Content-Length: 2172
Date: Tue, 01 Mar 2016 13:28:42 GMT

{"username":"xxxxxx","roles":["ROLE_ADMIN"],"token_type":"Bearer","access_token":"eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NTY4NDI1MjIsInN1YiI6ImFkbWluZGllIiwicHJpbmNpcGFsIjoiSDRzSUFBQUFBQUFBQUpWU3YwOFVRUlIrZXg2QlNLSmdnb2tGTm1KbjloTG92RWJBMDJDV3czQmNnNGxrYnZleERqYzdzODdNSG5jTnVVb0xDZ2hJWXVLXC93SDhpalgrQWdZS1cydFkzeThFZU5JU3BkdDk4Kzczdnh4NWZ3SWpSTUJkcnhvWHhVNUhGWFBvbTFWekdCc05NYzl2ek00TTZRcHNqM3VmQUprM2c4bmdsOEFJbzhjakNrMkNMZFZoRk1CbFhWbHBiR05wcVY4T3MwdkdBY1ZPekJMZVZidnZYM0tIU2VHTkJRZTI5S2NIb09reXlNRlNadEhVb................... etc.etc.

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

基于official docs,你应该将dataType更改为'json':

  

dataType(默认值:Intelligent Guess(xml,json,script或html))

btw您是否尝试从配置中删除async : false并检查它?