Привет всем я использую следующий метод, чтобы сделать программный вход для пользователя, но с его именем пользователя & паролем, и она отлично работает:Сделать Programmatic логин без имени пользователя/пароля?
public static void autoLogin(User user, HttpServletRequest request,
AuthenticationManager authenticationManager) {
GrantedAuthority[] grantedAuthorities = new GrantedAuthority[] { new GrantedAuthorityImpl(
user.getAuthority()) };
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
user.getUserName(), user.getPassword(),
grantedAuthorities);
// generate session if one doesn't exist
request.getSession();
token.setDetails(new WebAuthenticationDetails(request));
Authentication authenticatedUser = authenticationManager
.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
// setting role to the session
request
.getSession()
.setAttribute(
HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY,
SecurityContextHolder.getContext());
}
и мне было интересно, если это возможно сделать программный логин, но без имени пользователя или аутентификации пароля, просто делает этот пользователь аутентифицированным.
Если вы удалили эти две строки, как была создана следующая строка? . SecurityContextHolder.getContext() setAuthentication (authenticatedUser); –