spring boot(学习笔记第十四课) Spring Security的密码加密,基于数据库认证

spring boot(学习笔记第十四课)

  • Spring Security的密码加密,基于数据库认证

学习内容:

  1. Spring Security的密码加密
  2. 基于数据库认证

1. Spring Security的密码加密

  1. 如果用户的密码保存在数据库中是以明文保存,对于公司的安全将是灾难性的,哪个公司也不会允许用户数据使用明文保存。这里练习使用加密之后的密码进行认证。
    注意,这样公司的数据库里面是没有用户的明文密码,即使数据库泄露,也不会暴漏用户的明文密码在这里插入图片描述
  2. 实现密码加密
    • 配置passwordEncoder
      @Bean
      PasswordEncoder passwordEncoder() {
             
         return new BCryptPasswordEncoder(10);
      }
      
    • 手动根据明文密码生成密文密码
      bcrypt转换工具
      注意,每次生成的密码都不一样,但是每个生成的都好用
      在这里插入图片描述
    • 使用生成的密文进行用户的创建。
       @Bean
          UserDetailsService userDetailsService() {
             
              InMemoryUserDetailsManager users =
                      new InMemoryUserDetailsManager();
              users.createUser(User.withUsername("finlay_user")
                      .password("$2a$10$uwwZ5EyWbFnnw3JG53rqQ.VJUm/.Pl9Ko1CUP5Aqc2kuBr2Bx7bc.")
                      .roles("USER")
                      .build());
      
    • 再次进行认证。
      在这里插入图片描述

2. 基于数据库认证

以上练习了基于内存的认证,实际上,正式的系统开发都是使用数据库进行认证,在这里练习使用使用数据库的用户数据进行认证。这里使用postgresql

  1. 首先创建数据库需要的表
    • 创建USER
      CREATE TABLE "USER"(
      id int,
      username varchar(32),
      password varchar(255),
      enabled int,
      locked int,
      PRIMARY KEY(id)
      );
      
    • 创建ROLE
      CREATE TABLE "ROLE"(
      id int,
      name varchar(32),
      nameZh varchar(255),
      PRIMARY KEY(id)
      );
      
    • 创建USER_ROLE表(userrole的关系表)
      CREATE TABLE "USER_ROLE"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值