我能够登录(/api/login)并且能够成功发出 GET 请求。但是,我似乎无法弄清楚如何发出 POST 请求,同样我也无法注销 (/api/logout)。
控制器:(com.example.test)
static allowedMethods = [secret:['POST', 'GET']]
@Secured(['ROLE_ADMIN'])
def secret() {
render "You have ACCESS!!!"
}
卷曲登录(和 HTTP 响应):
curl -v -H "Content-Type: application/json" -X POST -d
'{"username":"user", "password":"pass"}'
http://localhost:8080/restplug/api/login
< HTTP/1.1 200 OK
{"username":"user","roles":"ROLE_ADMIN"],
"access_token":"a2d4biqg7oqu0ig4m22pj20qsesva81d",
"token_type":"Bearer"}
GET 请求的卷曲(方法秘密的示例):
curl -v -i -H "Authorization: Bearer a2d4biqg7oqu0ig4m22pj20qsesva81d"
-X GET http://localhost:8080/restplug/TestData/secret
我的 POST 请求总是导致被重定向到登录页面(即使我传递了令牌)。请展示如何使用 curl 或类似休息客户端(邮递员)的方式进行发布请求的示例。如果可能,请显示如何注销 (/api/logout)
配置
grails.plugin.springsecurity.rest.login.active=true grails.plugin.springsecurity.rest.login.endpointUrl='/api/login' grails.plugin.springsecurity.rest.login.failureStatusCode=401 grails.plugin.springsecurity. rest.login.useJsonCredentials=true grails.plugin.springsecurity.rest.login.usernamePropertyName='用户名' grails.plugin.springsecurity.rest.login.passwordPropertyName='密码' grails.plugin.springsecurity.rest.logout.endpointUrl=' /api/logout' grails.plugin.springsecurity.rest.token.storage.useGorm = true grails.plugin.springsecurity.rest.token.storage.gorm.tokenDomainClassName="com.example.AuthenticationToken" grails.plugin.springsecurity.rest .token.storage.gorm.tokenValuePropertyName="tokenValue" grails.plugin.springsecurity.rest.token.storage.gorm.usernamePropertyName='username'grails.plugin.springsecurity.rest.login.usernamePropertyName='用户名' grails.plugin.springsecurity.rest.login.passwordPropertyName='密码' grails.plugin.springsecurity.rest.token.generation.useSecureRandom = true
尝试使用 POST 失败
以下是我尝试使用 Curl 和邮递员的一些方法:
curl -v -X POST --form "access_token=bdv3de54oglo2i997k1tomvdgptm2ojq"
http://localhost:8080/restplug/TestData/secret
curl -v -X POST -H "Content-Type: application/x-www-form-urlencode"
--form "access_token=bdv3de54oglo2i997k1tomvdgptm2ojq"
http://localhost:8080/restplug/TestData/secret
并且还使用邮递员(附图):