我正在使用最新的Grails和spring安全插件。我想在应用程序启动时登录预定义的来宾用户,但不确定如何实现。
答案 0 :(得分:0)
好吧,我找到了一个解决方案……这还很原始,我不确定这是应用程序启动时最好的解决方法,但是它实现了我想要的。
因此在Bootstrap文件中,我实现了以下内容:
这是我的进口商品:-
import grails.plugin.springsecurity.rest.token.AccessToken
import grails.plugin.springsecurity.rest.token.generation.TokenGenerator
import org.springframework.security.authentication.AuthenticationManager
import org.springframework.security.authentication.BadCredentialsException
import org.springframework.security.core.Authentication
import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.core.userdetails.UserDetails
...在我的用户全部启动后,我想自动登录Guest用户,然后也生成JWT刷新和访问令牌...
/* Login in guest user on application startup */
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("guest", "guest");
token.setDetails(tttGuest);
try {
//doing actual authentication
Authentication auth = authenticationManager.authenticate(token);
log.debug("Login succeeded!");
//setting principal in context
SecurityContextHolder.getContext().setAuthentication(auth);
//Generate JWT access token and refresh token
AccessToken accessToken = tokenGenerator.generateAccessToken(springSecurityService.principal as UserDetails)
return true
} catch (BadCredentialsException e) {
log.debug("Login failed")
return false
}
剩下要做的唯一一件事就是弄清楚如何将令牌传达回客户端应用程序。