:REST spring security - Manually authenticating a

2019-03-20 13:48发布

I am writing a RESTful webservice on grails, using rest spring security api. All good... now I want to login a user on registration, there is a registration action, and up on registration completion, i would like to login that user. I found:

springSecurityService.reauthenticate(username) method 

but that only login the user, but doesnt create access token in authentication_token table.

Is there other possible way to login and get the access token for that user?

1条回答
甜甜的少女心
2楼-- · 2019-03-20 14:16

The plugin is designed for applications where the frontend (a pure HTML/JS client using, for example, AngularJS) is separated from the backend (your Grails app). In such scenario, the backend has to send back the frontend the access token, and the frontend has to store it somehow (usually using local storage or cookies), to pass it as an HTTP on every subsequent request.

You can do something like this in your controller:

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

Then, the frontend can grab the token from the URL and pass it on every subsequent API request.

查看更多
登录 后发表回答