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

使用Spring Boot的简单密码加密

阎扬
2023-03-14
  1. 下面是我的Bean类
    package com.naveen.entity;

    import org.springframework.context.annotation.Bean;

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

    public String encode(String passWord) {
        // TODO Auto-generated method stub
        return null;
    }

}
    package com.naveen.entity;
    import org.springframework.stereotype.Component;
    @Component
    public class BCryptPasswordEncoder extends PasswordEncoder {

    }
    public class UserController {

    @Autowired 
    PasswordEncoder passwordEncoder;
    @PostMapping("/saveUser")
    public int saveUser(@RequestBody User user) throws Exception {
    
        
        String encryptedPassword =passwordEncoder.encode(user.getPassWord());
           user.setPassWord(encryptedPassword);
    userService.saveUser(user);
        System.out.println("Inserted data with id: "+ user.getId());
     return 1;
     }

4. Service class as follows,

        @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserMapper userMapper;
        @Override
        public void saveUser(User user) {
            userMapper.saveUser(user);
        } }

当我运行代码时,我得到了下面的错误,字段passwordEncoder在com.naveen.controller.UserController需要一个类型为'PasswordEncoder'的beancom.naveen.entity.找不到。注入点有以下注释:-@org.springframework.beans.factory.annotation.自动加载(必需=true)操作:考虑在配置中定义一个类型为'com.naveen.entity.PasswordEncoder'的bean。

请帮我解决哪里出了问题。

共有3个答案

杨建章
2023-03-14

我知道我迟到了。但是你错过了编码函数的实现。

只需将编码功能替换为以下内容。

public String encode(String passWord) {
    BCryptPasswordEncoder bCryptPasswordEncoder =
            new BCryptPasswordEncoder(10, new SecureRandom());
    return bCryptPasswordEncoder.encode(passWord);

}

这将加密密码,而不是返回空值。

曹德明
2023-03-14

在PumpkinX的回答中,按以下顺序添加您的陈述:

     String encryptedPassword =passwordEncoder.encode(user.getPassWord());
     user.setPassWord(encryptedPassword);
     userService.saveUser(user);
     System.out.println("Inserted data with id: "+ user.getId());

注意,userService。saveUser(用户) 读取和编码数据后?因为有这个top语句,所以它的值为null。

赵嘉悦
2023-03-14

您需要将@Component注释添加到BCryptPasswordEncoder类

import org.springframework.stereotype.Component;

@Component
public class BCryptPasswordEncoder extends PasswordEncoder{

}

那就行了。

 类似资料:
  • 我正在寻找比ROT13更复杂的东西,但它不需要库(最好甚至不需要单元,只需要一个插入函数)。 我想使用用户提供的密码对称加密/解密给定的字符串。但是,结果必须是一个字符串,从某种意义上说,我必须能够将其存储在 .INI 文件。 有没有人有一个简单的函数可以做到这一点(delphi XE2)?谷歌今天不是我的朋友。 先谢谢了 [Update]/[Bounty]只是为了澄清(如果最初不是这样,请重复)

  • 假设我有一个IP地址,192.168.1.1 我想让我的程序基于这个IP地址创建一个随机的单字字符串,它可以很容易地解密,而无需密钥或密码或额外的安全措施。 例如。 我进入192.168.1.1 程序将其转换为AzlQrEHCSD或其他一些随机字符串 我在程序中输入这个字符串 它被转换回192.168.1.1 有没有简单的算法可以在不生成密钥或其他密码的情况下做到这一点?我知道密钥和密码是加密和解

  • 问题内容: 我正在尝试使用Java Cryto在Java中进行简单的AES加密,然后可以使用OpenSSL在ObjectiveC中对其进行解密。 因为我没有在ObjectiveC方面进行操作,所以我想使用openSSL命令行确保它可以正常工作,但是我总是会收到“错误的魔术数字” 这是我的Java代码 现在可以按预期运行,文件“ test-encrypted.txt”确实已加密,并且“ test-d

  • 我已经完成了用户注册和登录。但是我想在创建配置文件时加密密码。 这是我当前的配置 MongoDB连接 模型类:@ Document @ AllArgsConstructor @ NoArgsConstructor @ Data公共类用户{ @Id @Indexed私有字符串Id;@索引私有字符串地址;@索引私有字符串名称;@索引的私有字符串电子邮件;@索引私有字符串密码;@索引私有字符串角色;}

  • 问题内容: 在普通的PHP安装中进行双向加密的最简单方法是什么? 我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。 安全性不像代码的可移植性那么重要,因此我希望能够使事情尽可能简单。当前,我正在使用RC4实现,但是如果可以找到本机支持的内容,那么我可以节省很多不必要的代码。 问题答案: 编辑: 您确实应该使用openssl_encrypt()和openssl_decrypt()

  • 我目前正在学习Ruby,并尝试过简单密码挑战。我现在正在研究下面的解决方案,并试图通过逆向工程来理解这个解决方案背后的思维过程。以下是解决方案的链接。我将详细说明我对每个代码段的理解。如果他们不对,你能纠正我吗?谢了!https://extrym.io/tracks/ruby/extryes/simple-cipher/solutions/B200C3D9F10E497BBE2CA0D826DF2