У меня есть класс Customer, в котором есть вся информация об учетной записи (он НЕ расширяет класс userdetails.User в Spring).
Я пытаюсь сделать некоторые вещи после успешного входа в систему (например, установить новое время последнего входа в систему). Для этого я настроил пользовательский AuthenticationSuccessHandler
.
В методе onAuthenticationSuccess
я пытаюсь получить имя пользователя из объекта Authentication
. Этот объект, однако, является User
объектом. Если я попытаюсь получить username
, я получу ноль.
Можно ли как-то сделать объект Authority
объектом Customer
? Или мой класс Customer должен расширять класс User?
Обновление
Некоторые подробности:
У меня есть класс пользователя. Он полностью написан самостоятельно и не реализует и не расширяет интерфейс или класс. У меня нет класса, который реализует UserDetailsService. <form-login>
часть моего applicationContext-security.xml
выглядит так:
<form-login login-page="/index.htm"
authentication-success-handler-ref='authSuccHandler'
authentication-failure-handler-ref='authFailureHandler'
default-target-url='/library/login.htm'
always-use-default-target='true'/>
Theh authSuccHandler
выглядит следующим образом: (необходимое определение компонента на месте)
public class PostSuccessfulAuthenticationHandler extends SimpleUrlAuthenticationSuccessHandler
{
@Autowired
private UserService userService;
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws ServletException, IOException
{
userService.trackUserLogin(authentication.getName()); //NullPointerException
super.onAuthenticationSuccess(request, response, authentication);
}
}
Форма перенаправляет на j_spring_security_check