在项目中最尝使用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加密登录演示完成!

MD5加密--项目案例的更多相关文章

  1. Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密

    本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1.  摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...

  2. 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)

    最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...

  3. 【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】

    ==================================================================================================== ...

  4. 记录新项目中遇到的技术及自己忘记的技术点【DES加密解密,MD5加密,字符串压缩、解压,字符串截取等操作】

    一.DES加密.解密 #region DES加密解密 /// <summary> /// 进行DES加密 /// </summary> /// <param name=& ...

  5. JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册   显示错误信息到页面上的另一种方法: public ...

  6. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  7. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  8. java中使用MD5加密技术

    在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...

  9. iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

    本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...

随机推荐

  1. springmvc入门之HelloWorld篇

    springmvc是一个基于spring的mvc框架,各种优点啥的用过就知道了.下面开始讲HelloWorldController的实现. 1.开发环境搭建<导jar包+配置文件> 1.1 ...

  2. springMVC參数传递

    本文是本人在学习网络视屏springMVC的过程中的学习笔记. 为了更便于理解我决定从实际使用的角度解释. 我们在浏览器输入地址 http://localhost:8080/springMVC6/us ...

  3. 1303. [CQOI2009]中位数【前缀和+乱搞】

    Description 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b ,第二行为 ...

  4. PHP类的静态(static)方法和静态(static)变量使用介绍

    PHP类的静态(static)方法和静态(static)变量使用介绍,学习php的朋友可以看下     在php中,访问类的方法/变量有两种方法: 1. 创建对象$object = new Class ...

  5. javascript:typeof与instanceof区别

    from:http://www.wxwdesign.cn/article/skills/javascript_typeof_instanceof.htm JavaScript中typeof和insta ...

  6. Day1 MySql安装和基本操作

    数据和数据库 1.数据:客观事物的符号表示. 2.存储介质:纸,光盘,磁盘,u盘,云盘… 3.存储的目的:检索(查询) 存储数据量加大,导致检索的难度升高. 4.数据库(DB:database):按照 ...

  7. Redis——总结

    启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis 127.0.0.1:6379> redis 127.0 ...

  8. [转]地图投影的N种姿势

    此处直接给出原文链接: 1.地图投影的N种姿势 2.GIS理论(墨卡托投影.地理坐标系.地面分辨率.地图比例尺.Bing Maps Tile System)

  9. 初识Qt文字绘制

    1.新建一个Qt Gui应用,项目名称为myDraw,基类选择为QMainWindow,类名设置为MainWindow. 2.在mainwindow.h头文件中添加void paintEvent(QP ...

  10. iOS开发网络篇—发送GET和POST请求(使用NSURLSession) - 转

    说明: 1.该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2.本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. ...