[Spring Security] 前后端分离项目中的后端代码简单示例
一.前言
- 环境:springboot 2.3.0、springsecurity 5.3.2
- 这篇随笔可能对其他人很不友好,因为只贴了相关的代码,所以不建议大家参考,我只是写给自己看的,但是跟大家分享一下;
- 如果代码有问题的话请告诉我,但是其他的如代码不规范什么的就不必了,我知道我很渣,存在很多问题;
- 管理员这个实体类只有 id、username 和 password 这三个属性
- 该代码没有权限控制,没有会话管理等其他的功能,只有登录验证功能,所以较为简单
- 下面每个各种处理器都必须在第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; } }