Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)

这里写目录标题

  • 一:配置环境(重复Spring Boot 2)
  • 二:项目开发
    • A.项目结构(重复Spring Boot 2)
    • B.注解
    • C.项目各层实现
      • C1:pojo层
      • C2:mapper层
      • C3:controller层
  • 三:Spring Security应用(重点)
    • 1.user+生成的密码
      • C4:service层
    • 2. 与数据库对接--明文密码--密码要{noop}
        • 第一步
        • 第二步
    • 3.密文密码(数据库)

一:配置环境(重复Spring Boot 2)

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第1张图片

二:项目开发

A.项目结构(重复Spring Boot 2)

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第2张图片

B.注解

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第3张图片
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第4张图片
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第5张图片
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第6张图片
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第7张图片
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第8张图片

C.项目各层实现

C1:pojo层

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第9张图片

C2:mapper层

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第10张图片

C3:controller层

@RestController
public class UserController {

    @Autowired
    UserMapper userMapper;

    /**
     * 查询所有用户
     */
    @GetMapping("/user/all/")
    public List<User> getAll() {
        return userMapper.selectList(null);
    }

    /**
     * 查询单个用户
     */
    @GetMapping("/user/{userId}/")
    public User getUser(@PathVariable int userId) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",userId);

        return userMapper.selectOne(queryWrapper);

        // 范围遍历
        // public List getUser(int userId)
        // queryWrapper.ge("id", 2).le("id", 3);
        // return userMapper.selectList(queryWrapper);
    }

    /**
     * 添加某个用户 直接输入 id name password
     * @param userId
     * @param username
     * @param password
     * @return Add User Sucessfully
     */
    @GetMapping("/user/add/{userId}/{username}/{password}/")
    public String addUser (@PathVariable int userId,
                           @PathVariable String username,
                           @PathVariable String password) {

        User user = new User(userId, username, password);
        userMapper.insert(user);
        return "Add User Sucessfully";
    }

    /**
     * 删除某个用户,直接输入 id
     * @param userId
     * @return Delete User Successfully
     */
    @GetMapping("/user/delete/{userId}/")
    public String deleteUser(@PathVariable int userId) {
        userMapper.deleteById(userId);
        return "Delete User Successfully";
    }
}



三:Spring Security应用(重点)

1.user+生成的密码

spring security机制:用户认证
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第11张图片

C4:service层

2. 与数据库对接–明文密码–密码要{noop}

明文密码(数据库) [注数据库存密码要{noop}]
333333.jpg
Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第12张图片

第一步

用户认证+数据库1.jpg

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    //快捷键 windowsalt + insert / mac是option + enter
    @Autowired
    private UserMapper userMapper;
    // 传入 username 返回对应的信息,在这里也就是id name pwd
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", username);
        User user = userMapper.selectOne(queryWrapper);
        if (user == null) {
            throw new RuntimeException("用户不存在");
        }

        return new UserDetailsImpl(user);
    }
}


第二步

用户认证+数据库2.jpg


@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDetailsImpl implements UserDetails {

    private User user;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return user.getPassword();
    }

    @Override
    public String getUsername() {
        return user.getUsername();
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}

3.密文密码(数据库)

config 下新建 SecurityConfig
实现config.SecurityConfig类,用来实现用户密码的加密存储。

@Configuration
@EnableWebSecurity
public class SecurityConfig {

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

Spring Boot 3 配置环境(重复)&&项目结构(重复)&&Spring Security相关(重点)_第13张图片

你可能感兴趣的:(Spring,Boot,spring,spring,boot,java)