首页 > 其他分享 >P.13-用户密码加密存储密码、P.14-铺垫知识jwt工具类使用、P.15-登录接口实现细节分析

P.13-用户密码加密存储密码、P.14-铺垫知识jwt工具类使用、P.15-登录接口实现细节分析

时间:2023-04-25 15:44:13浏览次数:40  
标签:BCryptPasswordEncoder P.14 jwt 用户 接口 密码 public

P.13-用户密码加密存储密码

  实际项目中我们不会把密码明文存储在数据库中。

  默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password 。它会根据id去判断密码的加密方式。

    但是我们一般不会采用这种方式。所以就需要替换PasswordEncoder。

  我们一般使用SpringSecurity为我们提供的BCryptPasswordEncoder。

  我们只需要使用把BCryptPasswordEncoder对象注入Spring容器中,SpringSecurity就会使用该PasswordEncoder来进行密码校验。

  定义一个SpringSecurity的配置类,SpringSecurity要求这个配置类要继承WebSecurityConfigurerAdapter。

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    //创建BCryptPasswordEncoder注入容器
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
}

   测试1

@SpringBootTest
public class MapperTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void TestBCryptPasswordEncoder(){

      BCryptPasswordEncoder BCPE = new BCryptPasswordEncoder();

        String encode = BCPE.encode("123");
        String encode1 = BCPE.encode("123");
        System.out.println(encode);
        System.out.println(encode1);
    }

  测试2

@SpringBootTest
public class MapperTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void TestBCryptPasswordEncoder(){

      BCryptPasswordEncoder BCPE = new BCryptPasswordEncoder();
        System.out.println(BCPE.matches("123",
                "$2a$10$ykgwUyG0nel6VwCdue0hdesAURjW1tsI7D64LQi.uw7KVf9JYWjXq"));

    }

   测试3

@SpringBootTest
public class MapperTest {
    @Autowired
    private UserMapper userMapper;

    @Autowired
    private PasswordEncoder passwordEncoder;

    @Test
    public void TestBCryptPasswordEncoder(){
        System.out.println(passwordEncoder.matches("123",
                "$2a$10$ykgwUyG0nel6VwCdue0hdesAURjW1tsI7D64LQi.uw7KVf9JYWjXq"));
    }

  为true则无问题

  我们还需要将测试一运行结合替换掉数据库内的密码字段进行替换再去运行进行测试

  这便就是将密码进行加密后再进行登录

P.14-铺垫知识jwt工具类的使用

P.15-登录接口实现细节分析

  自定义登陆接口,然后让SpringSecurity对这个接口放行,让用户访问这个接口的时候不用登录也能访问。

  在接口中我们通过AuthenticationManager的authenticate方法来进行用户认证,所以需要在SecurityConfig中配置把AuthenticationManager注入容器。

  认证成功的话要生成一个jwt,放入响应中返回。并且为了让用户下回请求时能通过jwt识别出具体的是哪个用户,我们需要把用户信息存入redis,可以把用户id作为key

 

标签:BCryptPasswordEncoder,P.14,jwt,用户,接口,密码,public
From: https://www.cnblogs.com/agzq/p/17352809.html

相关文章

  • 虚拟机-windows 修改密码
    1、关机2、备份卷3、手动操作把系统卷挂载到别的vm上4、复制cmd.exe覆盖放大镜的exe文件5、手动卸载6、进入登录页面后点击放大镜的按钮,输入命令重置密码当前密码Tstack@1231.关机[root@openstack‐con01~(keystone_admin)]#novalist‐‐all|grep172.16.0.48|5d356c31‐......
  • 戴尔 联系 IBM 常用服务器 存储 默认管理口 地址 用户名 密码
    服务器设备默认管理1、宝德4卡服务器默认用户名:ADMIN/密码:111111112、超微服务器默认用户名:ADMIN/密码:admin000默认用户名:ADMIN/密码:ADMIN3、浪潮服务器型号:NF5270M4管理地址:手动配置默认用户名:admin/密码:admin型号:NF5270M2管理里地址:192.168.1.100默认用户名:a......
  • 用户密码加密存储与铺垫知识jwt工具类使用
    用户密码加密存储密码加密存储实际项目我们不会把密码明文存储在数据库中。默认使用PasswordEncoder要求数据库中的密码格式为{id}passwrod。它会根据id去判断密码为加密方式。但是我们一般不会采用这种方式。所以就需要替换PasswordEncod......
  • windows找回wifi密码
    1.打开命令提示符,键入netshwlanshowprofiles就像下图2.上述列表中的名称是电脑中存储的所有wifi配置;找到待找回密码的wifi名称,继续输入netshwlanshowprofilename="wifi名称"key=clear安全设置中的关键内容就是wifi密码......
  • linux中非交互式修改密码
    一、概述主要记录两种非交互式修改密码方式1、使用passwd和--stdin组合passwd默认是要用终端作为标准输入,而--stdin表示可以用任意文件做标准输入,这两个配合可以直接修改密码格式:#echo'密码'|passwd--stdin用户名echo123456|passwd--stdinroot在centos和欧拉环境都可以使用......
  • linux中非交互式修改密码
    一、概述主要记录两种非交互式修改密码方式1、使用passwd和--stdin组合passwd默认是要用终端作为标准输入,而--stdin表示可以用任意文件做标准输入,这两个配合可以直接修改密码格式:#echo'密码'|passwd--stdin用户名echo123456|passwd--stdinroot在centos和欧拉环境都可以使用......
  • drf-jwt、simplejwt的使用
    1.接口文档#前后端分离 -我们做后端,写接口-前端做前端,根据接口写app,pc,小程序-作为后端来讲,我们很清楚,比如登录接口/api/v1/login/---->post---->username,password编码方式json----》返回的格式{code:100,msg:登录成功}-后端人员,接口写完,一......
  • Linux设置用户登录系统连续N次输入错误密码,自动锁定X分钟。
    一、在字符终端下,要实现某一用户连续错误登陆N次后,就锁定该用户X分钟(使用pam_tally2认证模块)编辑登录认证文件:vim/etc/pam.d/login,在#%PAM-1.0下新加一行如果限制所有用户,则可以写成如下内容:   authrequiredpam_tally2.sodeny=3unlock_time=5even_deny_rootroot_unl......
  • 达梦数据库使用disql登录, 密码包含特殊字符(@)的处理方法
    一、背景  用户密码是:dm@ABcC123,包含@这个特殊符号。 disql客户端连接数据库的方式是:disqlusername/password@IP:PORT  那么,这个时候,密码也包含@,这个符号,该怎么处理呢? 二、处理方法 1、密码用双引号括起来,"dm@ABcC123"2、对双引号加转义,\"dm@ABcC123\"......
  • SpringSecurity从入门到精通:用户密码加密存储&铺垫只是jwt工具类使用
    用户密码加密存储    铺垫只是jwt工具类使用 ......