在項目中最嘗使用MD5這種非對稱加密的就是用戶信息登錄了。下面我就以一個簡單的登錄案例來說明MD5的用法
首先來看幾張圖:
用戶登錄頁:需要選擇要登錄的系統,同時輸入用戶的用戶名和密碼,驗證碼才能進入到后台的主頁
數據庫的管理員的用戶名和密碼 密碼是已經加密好的字段
OK,那么接下里的程序邏輯已經很明確了:
就是在前台頁面輸入填寫好用戶名,密碼等各種各樣的信息,表單提交給后台,在業務邏輯層查一下redis緩存,或者是查一下數據庫有沒有就好了,
如果有,則跳轉到主頁,如果沒有,則彈出提示框,提醒用戶的用戶名或者是密碼輸入錯誤。
接下來就是上代碼了 從Mapper接口開始寫,我是使用逆向工程直接生成的(當然,自己寫xml文件也可以,很簡單)
@Mapper public interface ManageUserMapper { List<ManageUserModel> selectByExample(ManageUserModelExample example); }
接下來就是業務邏輯層Business
@Service public class ManageUserBusiness extends BaseBusiness{ private static final Logger logger = LoggerFactory.getLogger(ManageUserBusiness.class); //用戶登錄 public ManageUserModel getUserByUserNameAndPwd(ManageUserModel manageUserModel){ ManageUserModelExample example = new ManageUserModelExample(); try { example.createCriteria().andUserNameEqualTo(manageUserModel.getUserName()) .andUserPwdEqualTo(MD5Util.encoderPassword(manageUserModel.getUserPwd())) .andIsDeleteEqualTo(ManageUserEnums.IS_DELETE.NORMAL.get()); }catch (Exception e){ logger.info("用戶名或者密碼錯誤——>"+manageUserModel.getUserName()+","+manageUserModel.getUserPwd()); } List <ManageUserModel> list = manageUserMapper.selectByExample(example); if (list == null || list.isEmpty()) { return null; } else { return list.get(0); } } }
然后是控制器
//用戶登錄信息查詢 @RequestMapping(value = "/htm/loginManageUser.htm") @ResponseBody public JsonModel loginManageUser(HttpServletRequest request, HttpSession session){ JsonModel jsonModel = new JsonModel(); String userName = request.getParameter("userName"); String password = request.getParameter("userPwd"); ManageUserModel manageUserModel = new ManageUserModel(); manageUserModel.setUserName(userName); manageUserModel.setUserPwd(password); ManageUserModel model = manageUserBusiness.getUserByUserNameAndPwd(manageUserModel); String searchClientId = request.getParameter("searchClientId"); if(model !=null){ session.setAttribute("manageuser",model); session.setAttribute("searchClientId",searchClientId); jsonModel.setStatus(true); jsonModel.setMessage("成功"); jsonModel.setResult(model); }else{ ArrayList <Object> list = new ArrayList <>(); jsonModel.setStatus(false); jsonModel.setMessage("您的權限不夠,不能進行訪問!"); return jsonModel; } return jsonModel; }
ok,測試一下吧,在業務層代碼上打一個斷點,正確的密碼是123,查詢經過MD5加密的密碼,Alt+F8查看一下變量的值,是不是和數據庫的一樣,那就說明庫中存在該管理信息
再看一下控制器Controller
==============返回到模板頁F12在頁面打一個斷點看一下,if判斷條件是true,說明下一步的跳轉是可以執行的======================
到此,MD5加密登錄演示完成!