当前位置: 首页 > 知识库问答 >
问题:

如何使用Springboot密码?

朱和惬
2023-03-14

我已经完成了用户注册和登录。但是我想在创建配置文件时加密密码。

这是我当前的配置

MongoDB连接

spring.data.mongodb.uri= mongodb://127.0.0.1:27017/Student
server.port=8080

模型类:@ Document @ AllArgsConstructor @ NoArgsConstructor @ Data公共类用户{ @Id @Indexed私有字符串Id;@索引私有字符串地址;@索引私有字符串名称;@索引的私有字符串电子邮件;@索引私有字符串密码;@索引私有字符串角色;}

存储库类:

public interface userReporsitory extends MongoRepository<User,String> {
    Optional<User> findByEmail(String email);
    List<User> findAllByRole(String role);
}

服务等级:

@AllArgsConstructor
@Service
public class userService {
    private userReporsitory userReporsitory;
    public User saveUser(User user){
        return userReporsitory.save(user);    
    }
    public User login(User user){
          User response = userReporsitory.findByEmail(user.getEmail()).orElseThrow(()->new RuntimeException("User Not Found"));
          
          if(!response.getPassword().equals(user.getPassword())){
            throw new RuntimeException("Bad Credincials");
          }

          return response;
    }

    public List<User> findAllUsers(){
      return userReporsitory.findAllByRole("user");
    }
}

控制器类:

    @CrossOrigin
@RestController
@AllArgsConstructor
@RequestMapping("api/v1/user")
public class userController {
   private userService userService;

    @PostMapping("/create")
    public ResponseEntity<User> save(@RequestBody User user){
        HttpStatus status = HttpStatus.EXPECTATION_FAILED;
        User response = userService.saveUser(user);

        if(response != null){
           status = HttpStatus.CREATED;
        }

        return new ResponseEntity<>(response, status);
        
    }
    @PostMapping("/login")
    public ResponseEntity<User> login(@RequestBody User user){
        return new ResponseEntity<>(userService.login(user),HttpStatus.ACCEPTED);
        
    }
    @GetMapping("/userList")
    public ResponseEntity<List<User>> userList(){
        return new ResponseEntity<>(userService.findAllUsers(),HttpStatus.ACCEPTED);
    }
        

}

共有1个答案

海典
2023-03-14

使用

BCryptPasswordEncoder

类在保存密码时DataBase.it将普通文本转换为随机值。

定义 BCrypt密码编码器 In config 类。

@Bean
public PasswordEncoder encoder() {
    return new BCryptPasswordEncoder();
}

存储库类:

   @Autowired
private PasswordEncoder passwordEncoder;

public User newUserAccount(UserDto accountDto) {
        User user = new User();
    user.setFirstName(accountDto.getFirstName());
    user.setLastName(accountDto.getLastName());
   
    user.setPassword(passwordEncoder.encode(accountDto.getPassword()));
    
    
    return repository.save(user);
}
 类似资料:
  • 基本上,我正在使用spring boot和thymeleaf创建一个餐厅餐饮网站(只是一个课程的练习),厨师提供自助餐,每个自助餐由不同的菜肴和不同的配料组成(对不起,我的英语)。 我的问题是:我应该使用来指示厨师制作的自助餐吗? 或者我应该直接使用(“/自助餐”)?因为对于配料的控制器,我最终会使用<代码>(“/厨师/{id}/自助餐/{id}/盘子{id}/配料”) ,它看起来很奇怪,但我认为

  • 最近,我一直在尝试教育自己如何使用Vigenere密码进行加密和解密。 我已成功加密该邮件,以下是我为实现加密所采取的步骤: 加密密钥:设置 消息:绝密 步骤1:键的数字表示为18、4、19(使用下表) E:P x k->C是加密函数 D:C x K->P为解密函数 明文:绝密 多谢了。

  • 我使用的是spring boot 1.2.8,但类不存在。没有这门课最好的方法是什么?

  • 问题内容: 我正在使用ExtJS框架。我在 JavaScript中 有MD5函数来加密某些JSON。我的后端使用Java,所以我想知道如何使用 Java 解密MD5 Javascript加密? 这是我正在使用的MD5函数的JS等效项: 问题答案: MD5是 哈希 (即单向转换),因此您无法对其进行解密。您可以将已知哈希与从明文计算出的哈希进行比较,以验证输入的有效性。Java已经为此内置了库。我在

  • 问题内容: 目前,我将密码[未加密]保留在属性文件中。使用ant将该密码原样放置在配置xml中。 [配置xml用于数据源,它正在创建dbcp.BasicDataSource的对象] 现在,是否有可能在ant目标之后以加密形式复制密码。听说Jasypt可以做到!直到现在我还没有尝试过。但是,问题不止于此。BasicDataSource不接受加密的密码。是否可以替代BasicDatasource。 仅

  • 本文向大家介绍SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密的方法,包括了SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密的方法的使用技巧和注意事项,需要的朋友参考一下 1.在本地Maven仓库中打开Powershell 2.输入命令,然