[Spring Security] 前后端分离项目中的后端代码简单示例

[Spring Security] 前后端分离项目中的后端代码简单示例[编程语言教程]

一.前言

  • 环境:springboot 2.3.0、springsecurity 5.3.2
  • 这篇随笔可能对其他人很不友好,因为只贴了相关的代码,所以不建议大家参考,我只是写给自己看的,但是跟大家分享一下;
  • 如果代码有问题的话请告诉我,但是其他的如代码不规范什么的就不必了,我知道我很渣,存在很多问题;
  • 管理员这个实体类只有 idusernamepassword 这三个属性
  • 该代码没有权限控制,没有会话管理等其他的功能,只有登录验证功能,所以较为简单
  • 下面每个各种处理器都必须在第6点中的 MySecurityConfiguration 中注册,否则无法生效
  • 代码已经验证过,没问题

二.代码

导包(略……)

1.自定义登录逻辑(访问数据库)

/**
 * @author Chase Meng
 * @description: 自定义登录逻辑(访问数据库)
 * @created on 2020/9/7
 */
@Configuration
public class CustomizeUserDetailsService implements UserDetailsService {
    @Autowired
    private LoginOperate loginOperate;
    @Autowired
    private PasswordEncoder passwordEncoder;
//    @Autowired
//    private Encryption encryption;

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

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException  {
        Admin admin =loginOperate.findUserByUsername(username);
        if(username==null||username.equals("")){
            throw new RuntimeException("用户名不能为空!");
        }
        if(admin==null){
            throw new RuntimeException("用户名不存在!");
        }
        List<GrantedAuthority> authorities=new ArrayList<GrantedAuthority>();
        authorities.add(new SimpleGrantedAuthority("ROLE_"+"normal"));  //由于没有设置授权,所以随便给一个身份normal
        User userDetails = new User(admin.getUsername(), passwordEncoder.encode(admin.getPassword()), authorities);
        return userDetails;
    }
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » [Spring Security] 前后端分离项目中的后端代码简单示例