这里写目录标题
一:配置环境(重复Spring Boot 2)
二:项目开发
A.项目结构(重复Spring Boot 2)
B.注解
C.项目各层实现
C1:pojo层
C2:mapper层
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<User> 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机制:用户认证
C4:service层
2. 与数据库对接–明文密码–密码要{noop}
明文密码(数据库) [注数据库存密码要{noop}]
第一步
@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);
}
}
第二步
@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();
}
}
本文含有隐藏内容,请 开通VIP 后查看