我在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.
答案 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
}
}