[SPRING] 수동으로 AuthenticationManager 인스턴스 가져 오기
SPRING수동으로 AuthenticationManager 인스턴스 가져 오기
나는 아래 구현하려고하지만 내 authenticationManager 인스턴스가 아래 예외를 throw하고 autowired되지 않습니다. Spring 인스턴스를 수동으로 어떻게 가져 옵니까? 스프링 컨트롤러를 사용하지 않고 JSF 요청 범위 Bean을 사용하고 있습니다. 컨테이너가 authenticationManager를 autowire하려고 시도 할 때 런타임에 예외가 발생합니다. requestCache는 정상적으로 제공됩니다. 내가 왜 두 가지 경우가 있는지 이해가 안돼.
config :
<authentication-manager>
<authentication-provider user-service-ref="userManager">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
@Controller
public class SignupController
{
@Autowired
RequestCache requestCache;
@Autowired
protected AuthenticationManager authenticationManager;
@RequestMapping(value = "/account/signup/", method = RequestMethod.POST)
public String createNewUser(@ModelAttribute("user") User user, BindingResult result, HttpServletRequest request, HttpServletResponse response)
{
//After successfully Creating user
authenticateUserAndSetSession(user, request);
return "redirect:/home/";
}
private void authenticateUserAndSetSession(User user,
HttpServletRequest request)
{
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
user.getUsername(), user.getPassword());
// generate session if one doesn't exist
request.getSession();
token.setDetails(new WebAuthenticationDetails(request));
Authentication authenticatedUser = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
}
}
해결법
-
==============================
1.먼저, AuthenticationManager에 명시적인 bean 이름을 제공하십시오.
먼저, AuthenticationManager에 명시적인 bean 이름을 제공하십시오.
<authentication-manager alias="authenticationManager"> ... </authentication-manager>
둘째, 자동 배선시 한정자를 사용합니다.
@Autowired @Qualifier("authenticationManager") protected AuthenticationManager authenticationManager;
from https://stackoverflow.com/questions/5417509/get-instance-of-authenticationmanager-manually by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 3.x로 https 사이트를 개발하는 방법은? (0) | 2019.03.28 |
---|---|
[SPRING] 봄 부팅 ddl 자동 발전기 (0) | 2019.03.28 |
[SPRING] Spring Data REST 쿼리 메소드 리소스에 프로젝션을 적용하려면 어떻게해야합니까? (0) | 2019.03.28 |
[SPRING] OutOfMemoryError : PermGen Space - Tomcat에서 실행중인 Spring의 Jasper 보고서 (0) | 2019.03.28 |
[SPRING] Spring 내에서 autowire 할 bean을 동적으로 정의 (한정자 사용) (0) | 2019.03.28 |