若依框架:深入剖析用户登录过程
一、验证码接口
基本思路
验证码接口通过生成并返回验证码图片来防止恶意程序自动攻击。
实现过程
验证码接口通过 CaptchaService 获取验证码并返回。验证码是一个包含图片和验证码字符串的 Captcha 对象。
@RestController
public class CaptchaController {
@Autowired
private CaptchaService captchaService;
/**
* 生成验证码
*/
@GetMapping("/captchaImage")
public AjaxResult captchaImage() {
// 获取验证码
Captcha captcha = captchaService.getCaptcha();
// 返回验证码
return AjaxResult.success(captcha);
}
}
二、登录接口
实现过程
登录接口通过 UserService 验证用户名和密码,并生成 token。
@RestController
public class LoginController {
@Autowired
private UserService userService;
/**
* 登录
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
// 获取用户名和密码
String username = loginBody.getUsername();
String password = loginBody.getPassword();
// 根据用户名查询用户
User user = userService.selectUserByUserName(username);
// 校验密码
if (!userService.matchesPassword(password, user.getPassword())) {
return AjaxResult.error("用户名或密码错误");
}
// 生成token
String token = userService.createToken(user);
// 返回token
return AjaxResult.success(token);
}
}
三、获取路由菜单接口
实现过程
获取路由菜单接口通过 MenuService 根据用户查询菜单,并构建路由菜单。
@RestController
public class MenuController {
@Autowired
private MenuService menuService;
/**
* 获取路由菜单
*/
@GetMapping("/getRouters")
public AjaxResult getRouters() {
// 获取当前登录用户
User user = ShiroUtils.getSysUser();
// 根据用户查询菜单
List