3

我在 STS 3.1 中有一个 Grails 应用程序,在 UrlMappings.groovy 和一组控制器中布置了一个 REST API。我安装了 SpringSecurity 的东西,所以我有 Login/Logout 控制器和 RegistrationCodeController 等。我一直在使用浏览器界面登录,但我需要从 REST 客户端开始登录。

我需要使用哪些具体的 url 和请求来注册/登录/检查登录/注销?

我已经能够通过将 j_username 和 j_password 发布到 /j_spring_security_check 来登录。但是,如果我首先发出一个未通过身份验证的请求,那么 POST 到 /j_spring_security_check 会自动返回初始失败请求的结果。我需要一种登录方式,在成功时总是返回成功/错误状态和 User.id。

4

1 回答 1

2

在 Config.groovy 中,插入一些配置项:

grails.plugins.springsecurity.successHandler.alwaysUseDefault = true
grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/rest/success"
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = "/rest/failed"

这将强制将成功登录重定向到 /rest/success。然后在这个方法中,返回user.id:

import grails.converters.JSON
class RestController {

    def springSecurityService

    def success() {
        def response = ['status':'success', 'id':springSecurityService.currentUser.id]
        render response as JSON
    }

    def failed() {
        def response = ['status': 'failed']
        render response as JSON
    }
}
于 2012-12-29T02:50:33.107 回答