向Grails + SpringSecurity浏览器应用程序添加REST身份验证

时间:2012-12-28 14:30:11

标签: rest authentication grails spring-security

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

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

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

1 个答案:

答案 0 :(得分:1)

在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
    }
}