Мы используем Spring Framework и Spring Security 3.0.x, как мы узнаем, вошел ли текущий посетитель и какое у него имя пользователя? У меня всегда был следующий код:
public static String getUsername() {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal == null)
return null;
if (principal instanceof String)
return (String) principal;
if (principal instanceof User)
return ((User) principal).getUsername();
return null;
}
Причина, по которой instanceof
s в прошлом, иногда getPrincipal()
возвращает String
, а иногда User
...
Так что я бы просто проверил, вернул ли getUsername()
null
, чтобы увидеть, вошел ли в систему текущий посетитель. Однако что-то изменилось в наших библиотеках Spring при обновлении некоторых компонентов недавно. Теперь, если пользователь не вошел в систему, getPrincipal()
возвращает String
"anonymousUser".
В дальнейшем, каким образом я должен проверять, вошел ли посетитель в систему и какое у него имя пользователя?