У меня есть этот класс обслуживания:Grails springSecurityService.currentUser возвращает нуль
class UserService {
def springSecurityService
@Listener(topic = 'currentUser', namespace = 'auth')
public User getCurrentUser(){
return springSecurityService.currentUser
}
def authenticate(OAuthToken oAuthToken){
SecurityContextHolder.context.authentication = oAuthToken
return springSecurityService.currentUser
}
}
Если я использую метод AUTHENTICATE, springSecurityService.currentUser
возвращает текущий пользователь. Но если я уже зарегистрирован, я хочу получить текущего пользователя с помощью метода getCurrentUser
и он возвращает null. Я отлаживал метод Springsecurityservice.getCurrentUser
, и метод isLoggedIn возвращает false.
Но если я попытаюсь это на мой взгляд, это работает:
<sec:ifLoggedIn>Yeeees</sec:ifLoggedIn>
UPDATE:
Когда я бегу UserService.getCurrentUser
SCH.context.authentication в SecurityService возвращает нуль. После этого вызова визуализируется представление, и SCH.context.authentication
возвращает правильную аутентификацию.
UPDATE 2:
Я проанализировал его и, кажется, только в том случае, если я использую его с шиной событий. Если я вызываю getCurrentUser непосредственно из контроллера, он работает нормально, но если я использую шину событий, это не так. Я использую Event Bus от плагинов платформы. Есть ли еще SCH.context для шины событий?
Но в чем причина получения текущего пользователя, использующего событие? – Ramsharan
Я просто хочу отделить мой контроллер/службы. – CyberAleks