2014-08-28 89 views
6

我正在使用rest spring security api在Grails上編寫一個REST風格的web服務。所有好...現在我想登錄一個用戶註冊,有一個註冊行動,並在註冊完成後,我想登錄該用戶。我發現::REST spring安全性 - 手動驗證新用戶並獲取訪問令牌

springSecurityService.reauthenticate(username) method 

但只有登錄用戶,但沒有在authentication_token表中創建訪問令牌。

是否有其他可能的方式登錄並獲取該用戶的訪問令牌?

回答

10

該插件是爲前端(使用例如AngularJS的純HTML/JS客戶端)與後端(您的Grails應用程序)分離的應用程序而設計的。在這種情況下,後端必須將前端的訪問令牌發送回前端,並且前端必須以某種方式(通常使用本地存儲或cookie)將其存儲(通常使用本地存儲或cookie),以在每個後續請求中將其作爲HTTP傳遞。

你可以做這樣的事情在你的控制器:

class RegisterController { 

    def springSecurityService 
    def tokenGenerator 
    def tokenStorageService 

    def register() { 
     //do stuff 
     springSecurityService.reauthenticate(username) 
     String tokenValue = tokenGenerator.generateToken() 
     tokenStorageService.storeToken(tokenValue, springSecurityService.principal) 

     redirect url: "http://example.org/?access_token=${tokenValue}" 
    } 
} 

然後,前端可以抓住從URL令牌並把它每個後續API請求。

+0

在這種情況下''refresh_token'什麼?當這個過期時,我如何獲得新的令牌?舊的會工作嗎? – lealceldeiro 2017-06-27 13:30:58

相關問題