Grails spring security rest inject tokenGenerator
Grails spring security rest inject tokenGenerator
我也有类似的要求 post 提到过。 :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}"
}
}
我试过了,但对我不起作用。似乎 TokenGenerator 实现 class 没有正确注入。我了解 grails-spring-security-rest TokenGenerator 中的默认实现将是 JWT,但想知道我应该在哪里注册或配置它。
好吧,如果你想使用 "tokenGenerator"
那么你需要在 "resources.groovy"
下注册它,如下所示
// creating the bean of token generator
tokenGenerator(SecureRandomTokenGenerator)
然后将其注入您的控制器或服务,如下所示
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
}
我也有类似的要求 post 提到过。 :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}"
}
}
我试过了,但对我不起作用。似乎 TokenGenerator 实现 class 没有正确注入。我了解 grails-spring-security-rest TokenGenerator 中的默认实现将是 JWT,但想知道我应该在哪里注册或配置它。
好吧,如果你想使用 "tokenGenerator"
那么你需要在 "resources.groovy"
下注册它,如下所示
// creating the bean of token generator
tokenGenerator(SecureRandomTokenGenerator)
然后将其注入您的控制器或服务,如下所示
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
}