Springboot+MybatisPlus如何实现带验证码的登录功能

实现带验证码的登录功能由两部分组成::1、验证码的获取 2、登录(进行用户名、密码和验证码的判断)

获取验证码

获取验证码需要使用HuTool中的CaptchaUtil.createLineCaptcha()来定义验证码的长度、宽度、验证码位数以及干扰线条数

同时也要使用到HttpSession对象和HeepServletResponse对象 session:拿到验证码需要放入session中,response用来返回页面

1、获取验证码对象

复制代码
LineCaptcha linCaptcha=CaprchaUtil.createLineCaptcha(116,40,4,10);

2、放入session

复制代码
session.setAttribute("code",lineCaptcha.getCode);

3、输出

复制代码
ServletOutputStream stream=response.getOutputStream();
lineCaptcha.write(stream);

4、关闭

复制代码
stream.close();

登录

登录功能首先要去判断验证码,若验证码为空或者不匹配,直接返回错误;否则再去进行用户名和密码的对比

1、判断验证码

复制代码
String sessioncode=(String)session.getAttribute("code");
if(code!=null && code.equals(sessioncode)
{

}

2、若验证码存在并且象征吗匹配成功则去数据库比对用户名和密码(这里我们需要创建一个新的sql语句 select * from user where username=#{username} && password=#{password})如何去创建一个新的sql语句请查看http://t.csdnimg.cn/y7rWT

复制代码
String sessioncode=(String)session.getAttribute("code");
if(code!=null && code.equals(sessioncode)
{
   User user=userService.login(username,password);
   if(user!=null)
   {
      //登录成功
      session.setAttribute("user",user);
   }
   else
   {  //登录失败,用户名或密码有误}
}
else
{  //登录失败,验证码有误}

创建一个新的sql语句 userService.login(username,password)

(1)Mapper中

复制代码
@Select("select * from user where username=#{uesrname} && password=#{password}
public User login(String username,String password);

(2)Service中

复制代码
public User login(Sting username,String password);

(3)ServiceImpl中

复制代码
@Autowird 
UserMapper userMapper

@Overried
public User login(String username,String password)
{
   return userMapper.login(username,password);
}
相关推荐
Dshuishui5 分钟前
我用 Claude Code 做了一个学术论文搜索工具
开发语言·人工智能·python·pip·uv
IT 行者5 分钟前
Spring AI 2.0.0-M5 发布:全面转向 OpenAI Java SDK
java·人工智能·spring
Resky08186 分钟前
ReentrantReadWriteLock 深度解析
java·开发语言·juc
铭keny8 分钟前
子系统 SSO 单点登录接入配置指南
java
电商API_1800790524728 分钟前
淘宝商品评论数据获取指南|批量自动化|api应用
java·爬虫·spring·性能优化·自动化
梦梦代码精30 分钟前
Likeshop一个开源商城到底有哪些功能模块?
java·低代码·开源·php
赏金术士37 分钟前
Kotlin 从入门到进阶 之协程 Flow 模块(九)
开发语言·kotlin·php
java1234_小锋38 分钟前
Spring AI 2.0 开发Java Agent智能体 - 对话与提示词工程(Prompt)
java·人工智能·spring
赵钰老师38 分钟前
R语言在生态环境领域中的应用
开发语言·数据分析·r语言
guygg8841 分钟前
四旋翼无人机串级PID控制MATLAB仿真
开发语言·matlab·无人机