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);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12828.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JavaScript】嚴格模式

嚴格模式(Strict Mode)是一種運行模式,它提供了一種更加嚴格的語法和錯誤檢查,以幫助開發者編寫更可靠、更規范的代碼。 什么是嚴格模式: 嚴格模式是一種 JavaScript 的執行模式,通過啟用嚴格模式&#xff…

這個notebook集合,贊

這幾天在Github上看到一個數據科學倉庫,匯總了很多Python notebook代碼,主要是數據方向。 項目地址: https://github.com/donnemartin/data-science-ipython-notebooks 其中包括了pandas、numpy、matplotlib、scikit-learn、tensorflow、sp…

【Xilinx】程序可以綜合實現,但無法生成bit文件

項目場景: 使用xilinx vivado過程中遇到以下問題: 程序可以綜合實現,但無法生成bit文件 問題描述 最終生成bit文件時報錯如下 [DRC PDCN-1567] BUFGCTRL_CE_pins_both_connected_to_gnd: For cell ***/rxrecclk_bufg_i placed at site BU…

c++ visualstudio2017 opencv debug源碼 windows配置

源碼下載和cmake opencv源碼和opencv-contribue文件夾的層級目錄 在opencv-4.4.0中新建build文件夾,并啟動cmake-gui 配置如下,使用vs2017 x64, 需要注意contrib文件夾的設置,如下方藍色所示,依次點擊Configure和Generate 在bu…

半小時搞懂STM32知識點——UART

1.UART 1.1為什么要使用UART這種協議?介紹一下UART及其特點 成本低,硬件簡單,數據格式靈活; 低速全雙工異步串行通信 1.2 UART數據幀格式? 起始位(1)+數據位(5-8) 校驗位…

docker-java 操作docker

部署docker 10分鐘學會Docker的安裝和使用_docker安裝-CSDN博客文章瀏覽閱讀2.5w次,點贊44次,收藏279次。文章目錄Docker簡介Docker安裝Windows安裝Linux安裝CentOS安裝Ubuntu安裝最近花了些時間學習docker技術相關,在此做一些總結&#xff0…

12350 安全生產舉報投訴特服熱線系統解決方案

一、建設背景與系統概述 (一)背景介紹 隨著經濟的持續發展和社會的不斷進步,安全生產問題日益凸顯,成為影響社會穩定和人民福祉的重要因素。在此背景下,加強安全生產監管,提高監管效率和質量顯得尤為重要…

libasound+libsndfile讀取麥克風音頻保存為wav文件

依賴庫 要完成該功能依賴libasound、libsndfile庫,該命令在linux下可以通過命令行安裝安裝,安裝命令如下: sudo apt-get install libasound2-dev sudo apt-get install libsndfile1-dev 代碼實現 本文的目的是在linux下利用libasound和li…

wsl2遷移到非c盤

WSL2遷移 系統win11 核心步驟: 0) 以管理員身份運行powershell 查看已經安裝的Ubuntu分發版本,我的是默認 wsl -lPS C:\Users\Windows10> wsl -l 適用于 Linux 的 Windows 子系統分發版: Ubuntu (默認) 1)導出到D盤 wsl --export Ubuntu d://ubuntu.tar PS C:\U…

你還在手動加好友?試試這款神器,釋放雙手自動添加!

你還在手動添加微信好友嗎?尤其是在忙碌的時候,手動加好友不僅費時又很容易出錯。試試這個自動添加好友神器——個微管理系統,釋放你的雙手,輕松拓展好友列表! 1、多號同時登錄在線 系統支持多個微信號同時登錄在線&…

數據結構——二叉樹知識點詳解!

引言:本篇博客將詳細介紹到數據結構中的又一位大將——二叉樹。它也是我們目前學到的第一個非線性的數據結構。并且本章將學到的概念居多,希望大家可以理解并牢記。 更多有關C語言和數據結構知識詳解可前往個人主頁:計信貓 目錄 一&#xff0…

AIGC行業現在適合進入嗎

AIGC行業目前正處于快速發展階段,市場需求正處于爆發期,上大學網(www.sdaxue.com)認為,對于有興趣的個人或企業而言,現在可能是一個適合進入的時機,以下是具體的分析,供大家參考! 一、AIGC行業前…

網絡安全基礎知識

目錄 1、什么是防火墻?什么是堡壘主機?什么是DMZ? 2、網絡安全的本質是什么? 3、計算機網絡安全所面臨的威脅分為哪幾類?從人的角度,威脅網絡安全的因素有哪些? 4、網絡攻擊和防御分別包括那…

zip file is empty

從下找到報錯的jar包。展開這個jar包,看下是否正常,正常的是能夠展開看到一些文件夾以及里面的類,如下:如果不正常,就刪除這個jar包,同時找到這個jar包在本地maven倉庫的地址,也刪除掉&#xff…

string類實現

目錄 string類實現 1.構造函數(三種) 2.c_str()函數 3.operator[] 重載 4.size()函數實現 5.迭代器 6.reserve()函數實現 7.push_back()函數實現 8.append()函數實現 9.operator實現 10.insert() 實現 11.erase()函數實現 12.find()函數實現…

Chrome 瀏覽器的常用命令包括

Chrome 瀏覽器的常用命令包括: 1. **新建標簽頁**:Ctrl T (在 Windows/Linux 下),Command T (在 macOS 下)。 2. **關閉當前標簽頁**:Ctrl W (在 Windows/Linux 下&…

Java面試八股之Collection和Collections的區別

Java中Collection和Collections的區別 Collection 是一個接口,位于 java.util 包中,它是 Java 集合框架的頂層接口之一,代表了一組對象的集合。Collection 接口定義了所有集合類型(如 List、Set、Queue 等)所共有的基…

LeetCode2352相等行列對

題目描述 給你一個下標從 0 開始、大小為 n x n 的整數矩陣 grid ,返回滿足 Ri 行和 Cj 列相等的行列對 (Ri, Cj) 的數目。如果行和列以相同的順序包含相同的元素(即相等的數組),則認為二者是相等的。 解析 針對題目給出的數量級…

cubemx配置stm32f407VET6實現can通信

背景: 項目上需要把原先的TMC5160電機驅動器替換為購買的電機控制模塊(該模塊采用canopen通信) 移植canopen的前提是can通信正常,現在添加一下can通信(先用標準幀,250K bit/S的波特率測試) 原理…

個人學習計劃

vue前端(一周) 05/14 - 05/19 Html、css復習、vue基礎復習、axios復習 05/14 ElementUI學習 05/15 JWT集成驗證碼、token 05/16 vue-route多角色登錄 05/17 增刪查改、文件下載 05/18 Echart餅狀圖 05/19 📌 附加學習: 父子傳值三…