2013-05-08 5 views

ответ

0

Как насчет этого? (При условии, getPrincipal() не возвращает null)

String className = SecurityContextHolder.getContext().getAuthentication().getPrincipal().getClass().getName(); 

Она должна возвращать имя класса прикрепленную с именем пакета, то есть полное имя класса. Я думаю, что тип будет чем-то (некоторым весенним классом), который реализует java.security.Principal. Таким образом, вы можете сделать следующее:

Principal p = (Principal) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
0

getDetails() возвращает объект WebAuthenticationDetails который содержит IP-адрес пользователя и SESSIONID (хотя я подозреваю, что это может зависеть от типа приложения, поскольку getPrincipal() также зависит, это стоит причина в том, что getDetails() также может быть изменена аналогичным образом).

getPrincipal() возвращает объект, который зависит от того, как вы управляете аутентификацией. При аутентификации LDAP, например, метод getPrincipal() возвращает объект LdapUserDetailsImpl.

Если вам необходимо получить доступ пользователей/основной информации, я создал класс пользовательских UserDetails, и магазин/получить информацию, необходимую оттуда, но можно так же легко использовать getPrincipal() и getDetails() условии, что вы бросили их в качестве или вы расширяете классы, которые они, естественно, возвращают (и управляют ими, как вам нравится).

Это довольно забавно, я считаю обязательным отметить, что метод getPrincipal() фактически не возвращает объект Principal (и объект LdapUserDetailsImpl не может быть отличен как объект Principal).

Смежные вопросы