zoukankan      html  css  js  c++  java
  • 密码加密

    一、在用户对象的密码显示设置为下面的方式User user = new User(sysUser.getUsername(), sysUser.getPassword(), collection);

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    // 根据用户名获取用户对象
    SysUser sysUser = sysUserDao.findByUsername(username);
    if(sysUser!=null){
    // 创建角色集合对象
    Collection<GrantedAuthority> collection = new ArrayList<>();
    // 创建临时角色对象
    GrantedAuthority grantedAuthority = new SimpleGrantedAuthority("ROLE_USER");
    // 对象添加到集合中
    collection.add(grantedAuthority);
    User user = new User(sysUser.getUsername(), sysUser.getPassword(), collection);
    return user;
    }
    return null;
    }

    二、在添加用户的service实现类中添加密码加密

    //安全框架SpringSeurity加密
    @Override
    public void save(SysUser sysUser) {
    // 获取明文密码
    String password = sysUser.getPassword();
    // 对明文密码加密
    String encode = passwordEncoder.encode(password);
    sysUser.setPassword(encode);
    sysUserDao.save(sysUser);
    }
    三、修改spring-security.xml配置文件
        <!--  配置认证登录信息 认证管理器自带账户密码-->
    <security:authentication-manager>
    <!--提供服务类 去数据库查询账户密码-->
    <security:authentication-provider user-service-ref="sysUserServiceImpl">
    <security:password-encoder ref="passwordEncoder"/>
    <!-- <security:user-service>-->
    <!--临时账户密码
    authorities:指定用户的认证角色
    {noop}不加密-->
    <!-- <security:user name="admin" password="{noop}admin" authorities="ROLE_USER"></security:user>-->

    <!-- </security:user-service>-->
    </security:authentication-provider>
    </security:authentication-manager>
    <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>
    四、加密后登录不上问题解决方式---用BCryptPasswordEncoderUtils加密工具类进行密码加密,然后把加密后的密码存入数据库,就可以用加密前的密码登录了
    package cn.kgc.utils;

    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    //加密工具类
    public class BCryptPasswordEncoderUtils {
    private static BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
    public static String encodePassword(String password){
    return bCryptPasswordEncoder.encode(password);
    }

    public static void main(String[] args) {
    String password="要加密的密码";
    String pwd=encodePassword(password);
         //输出加密后的密码存入数据库
    System.out.println(pwd);
    }
    }
  • 相关阅读:
    LeetCode算法训练
    重新整理自己的博客
    VS2019制作安装包与ClickOnce部署
    2020年系统架构设计师考试通过总结
    合并两个有序数组为一个新的有序数组
    Inno Setup 出现 the drive or unc share you selected does not exist or is not accessible 解决记录
    60秒定位问题,十倍程序员的Debug日常
    这几个神秘参数,教你TDengine集群的正确使用方式
    存储成本仅为OpenTSDB的1/10,TDengine的最大杀手锏是什么?
    基于TDengine进行睿信物联网平台的迁移改造
  • 原文地址:https://www.cnblogs.com/zhangrongfei/p/11244665.html
Copyright © 2011-2022 走看看