gpt4 book ai didi

Grails spring security rest 注入(inject) tokenGenerator

转载 作者:行者123 更新时间:2023-12-02 15:18:37 25 4
gpt4 key购买 nike

我有类似这篇文章提到的要求。 :REST spring security - Manually authenticating a new user and getting access token

根据接受的答案,代码将如下所示:

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

我试过了,但它对我不起作用。似乎没有正确注入(inject) TokenGenerator 实现类。我知道 grails-spring-security-rest TokenGenerator 中的默认实现将是 JWT,但想知道我应该在哪里注册或配置它。

最佳答案

好吧,如果您想使用 "tokenGenerator"那么你需要在"resources.groovy"下注册像下面

// creating the bean of token generator
tokenGenerator(SecureRandomTokenGenerator)

然后将其注入(inject)您的 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}"
}
}

我遵循了相同的示例(稍作修改)并按预期工作。

我用过 "userDetailsService"用于生成用户实例而不是 "springSecurityService.reauthenticate(username)"
所以我的功能如下所示。
/**
* For generating the access token for the user
*
* @param userName : Holds the username of the user
*
* @return : access token
*/
String generateAccessToken(String userName){
String tokenValue

try{
//load user details
def userDetails = userDetailsService.loadUserByUsername(userName)

//generate access token
tokenValue = tokenGenerator.generateAccessToken(userDetails).accessToken

//store access token
tokenStorageService.storeToken(tokenValue, userDetails)
} catch (Exception e){
//Exception handling code
}

return tokenValue
}

关于Grails spring security rest 注入(inject) tokenGenerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com