Java BCrypt+;弹簧靴
我使用此控制器创建用户:Java BCrypt+;弹簧靴,java,spring-boot,bcrypt,Java,Spring Boot,Bcrypt,我使用此控制器创建用户: @PostMapping public ResponseEntity<?> insert(@Valid @RequestBody UserDTO userDTO, UriComponentsBuilder uriInfo) { User user = UserDTO.getEntity(userDTO); final Long id = service.insert(user); final URI locatio
@PostMapping
public ResponseEntity<?> insert(@Valid @RequestBody UserDTO userDTO,
UriComponentsBuilder uriInfo) {
User user = UserDTO.getEntity(userDTO);
final Long id = service.insert(user);
final URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(id).toUri();
return ResponseEntity.created(location).build();
}
我提供了一项服务,该服务可以接收该用户并将密码更改为加密密码:
public Long insert(User user) {
user.setPassword(PasswordUtils.generateBCrypt(user.getPassword()));
repository.save(user);
return user.getId();
}
PasswordUtils.class的代码如下:
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class PasswordUtils {
public static String generateBCrypt(String password) {
if (password == null) {
return password;
}
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder.encode(password);
}
}
在我的pom.xml中,我对spring boot starter安全性依赖项进行了注释,因为当我不进行注释时,它会要求我输入用户名和密码以发出请求。调用REST服务时出现错误:java.lang.ClassNotFoundException错误:org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
如何在没有我的服务的情况下使用BCrypt询问凭据
编辑
我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heart</groupId>
<artifactId>echocardiogram</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>echocardiogram</name>
<description>Echocardiogram Management System</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.heart
超声心动图
0.0.1-快照
战争
超声心动图
超声心动图管理系统
org.springframework.boot
spring启动程序父级
2.0.1.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴开发工具
运行时
mysql
mysql连接器java
运行时
org.springframework.boot
弹簧起动试验
测试
org.springframework.security
弹簧安全性试验
测试
org.springframework.boot
springbootmaven插件
可能重复FWIW,没有理由每次都创建一个新编码器。将其设为常量或注入一个公共实例。@chrylis,即使注入,错误仍然存在。我对这种方法不是很确定。尝试为BCryptPasswordEncoder
创建bean,并对其进行自动布线。也许是个坏主意
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heart</groupId>
<artifactId>echocardiogram</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>echocardiogram</name>
<description>Echocardiogram Management System</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>