Java Spring安全性:包含AuthenticationManager.authenticate()的方法引发异常
我有一个方法在里面使用了Java Spring安全性:包含AuthenticationManager.authenticate()的方法引发异常,java,spring-boot,spring-security,Java,Spring Boot,Spring Security,我有一个方法在里面使用了authenticate()方法,我发现混淆的是AuthenticationManager.authenticate()在验证失败时抛出AuthenticationException,但是方法authenticateUser不会抛出任何异常,也不会触发编译错误 @PostMapping("/signin") public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginForm l
authenticate()
方法,我发现混淆的是AuthenticationManager.authenticate()
在验证失败时抛出AuthenticationException,但是方法authenticateUser
不会抛出任何异常,也不会触发编译错误
@PostMapping("/signin")
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginForm loginRequest){
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()));
SecurityContextHolder.getContext().setAuthentication(authentication);
}
@PostMapping(/signin)
公共响应身份验证者(@Valid@RequestBody LoginForm loginRequest){
Authentication=authenticationManager.authenticate(
新的UsernamePasswordAuthenticationToken(loginRequest.getUsername(),loginRequest.getPassword());
SecurityContextHolder.getContext().setAuthentication(身份验证);
}
因为AuthenticationException
是RuntimeException
。编译器不会检查您是否处理运行时异常
。如果你想处理它,你必须自己去捕捉它。你的控制器不是一个AuthenticationManager
,为什么要这么做呢。接下来是一个运行时异常。最后,我想知道为什么这个控制器会完全绕过Spring安全性和它所做的所有检查。因为AuthenticationException
是RuntimeException
。编译器不会检查您是否处理运行时异常
。如果你想处理它,你必须自己去捕捉它。你的控制器不是一个AuthenticationManager
,为什么要这么做呢。接下来是一个运行时异常。最后,我想知道为什么这个控制器会完全绕过Spring Security和它所做的所有检查。