java.lang.NullPointerException:身份验证时为 null [重复]

java.lang.NullPointerException: null at authenticate [duplicate]

提问人:강찬욱 提问时间:10/13/2023 更新时间:10/16/2023 访问量:34

问:

我有关于Spring Security的Qeustion。

我即将使用 RequestBoby“User”请求“/auth/login”。using talend by the way

和这个控制器

@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
public class AuthController {
    private AuthService authService;

    @PostMapping("/login")
    public ResponseEntity<User> authenticate(@RequestBody User user) {
        return ResponseEntity.ok(authService.authenticate(user)); // line 24
    }
}

但是 NullPointerException 是这样的。

java.lang.NullPointerException: null
    at com.*.demo.controller.AuthController.authenticate(AuthController.java:24) ~[main/:na]

我认为 Request 是正确的,因为我还会检查用户是否通过 ToString 接收了 RequestBody

User(id=null, [email protected], password=1234, name=null)

服务代码在这里。

@Service
@RequiredArgsConstructor
public class AuthService {

    private final AuthenticationManager authenticationManager;

    public User authenticate(User user) {
        authenticationManager
                .authenticate(new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()));
        return user;
    }

}

我已经完成了 PasswordEncoder、UserDetailsService、AuthenticationProvider 和 AuthenticationManager 的设置。 并将这些设置应用于 SecurityFilterChain。 我试图修复错误几个小时,但失败了。如果你需要,我会发送一个代码。

谢谢。

我尝试更改所有配置文件。

Spring 身份验证 安全性

评论

1赞 knittl 10/13/2023
private AuthService authService不是,因此不是必需的参数,因此不是龙目岛生成的构造函数的一部分。由于它不是从构造函数分配的,因此它保持为 null。final
0赞 강찬욱 10/14/2023
@knittl 感谢您的回答。这就是原因。我今天发现它,因为我刚刚醒来。

答:

0赞 1615903 #1

private AuthService authService不是,因此不是必需的参数,因此不是龙目岛生成的构造函数的一部分。由于它不是从构造函数分配的,因此它保持为 null。final