Как узнать, вошел ли текущий веб-посетитель в систему с помощью Spring Security 3.0

Мы используем 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 , а иногда a Пользователь ...

Поэтому я бы просто проверил, вернул ли getUsername () null , чтобы узнать, вошел ли в систему текущий посетитель. Однако что-то изменилось в наших библиотеках Spring при недавнем обновлении некоторых компонентов. Теперь, если пользователь не вошел в систему, getPrincipal () возвращает String «anonymousUser».

В дальнейшем, каким правильным способом я должен проверять наличие посетитель вошел в систему и какое у него имя пользователя?

6
задан at. 27 April 2011 в 21:08
поделиться