导入依赖:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.5.3</version>
</dependency>
1.创建配置类
@Configuration
public class SecurityConfig {
@Bean //接口返回实现类,加密处理
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
2.实现业务逻辑
2.1在service定义方法
public interface IUserInfoService extends IService<UserInfo> {
public UserInfo getUserByName(String username);
}
2.2.实现这个方法
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements IUserInfoService {
@Override
public UserInfo getUserByName(String username) {
// 设置查询条件
QueryWrapper<UserInfo> wrapper = new QueryWrapper<>();
wrapper.eq("username", username);
return this.baseMapper.selectOne(wrapper);
}
}
3.注入配置类,控制层调用,逻辑还可以优化到服务层
@Autowired private PasswordEncoder passwordEncoder;
@ApiOperation("登录")
@PostMapping("/login")
public Result<Map<String,Object>> login(@RequestBody UserInfo userInfo){
UserInfo user = iUserInfoService.getUserByName(userInfo.getUsername());
if(user == null){ //用户名不存在
return Result.fail(20002, "用户名或密码错误!!!");
}
// 密码判断 (原始密码,mysql密码)
boolean matches = passwordEncoder.matches(userInfo.getPassword(), user.getPassword());
if(!matches){
return Result.fail(20003, "用户名或密码错误!!!");
}
Map<String, Object> data = new HashMap<>();
data.put("token", user.getUsername());
return Result.success(data);
}
本文将介绍如何在Java项目中使用Spring Security。首先,你需要导入相关依赖。接着,创建配置类并实现具体的业务逻辑,包括在Service层定义和实现方法。最后,通过控制器层调用这些服务,进一步优化逻辑。
1147

被折叠的 条评论
为什么被折叠?



