Войдите в систему пользователя при запуске приложения - PullRequest
0 голосов
/ 30 июня 2018

Я использую последнюю версию Grails и плагин безопасности Spring. Я хотел бы войти в систему с предопределенным гостевым пользователем при запуске приложения, но не уверен, как этого добиться.

  1. Как мне программно войти в систему пользователя? (Я пытаюсь сделать это в начальной загрузке, но не могу найти, что импортировать для класса AuthToken)
  2. Где это лучше всего сделать - то есть в конфигурации начальной загрузки?

1 Ответ

0 голосов
/ 10 июля 2018

Хорошо, я нашел решение ... оно немного грубое, и я не уверен, что это лучшее место для него при запуске приложения, но оно достигает того, чего я хотел.

Итак, в файле 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

... после всех загрузок моего пользователя я хочу автоматически войти в систему как гость, а затем сгенерировать токен обновления 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
    }

Осталось только выяснить, как передать токены обратно клиентскому приложению.

...