在项目中最尝使用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. Centos7使用yum安装Mysql5.7.19的详细步骤(可用)

    Centos7的yum源中默认是没有mysql,因为现在已经用mariaDB代替mysql了. 首先我们下载mysql的repo源,我们可以去mysql官网找最新的repo源地址 地址: https: ...

  2. Hadoop学习之路(十三)MapReduce的初识

    MapReduce是什么 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大 ...

  3. Js 面向对象之封装,继承,原型,原型链

    封装 ,继承 ,原型, 原型链 封装 ? 面向对象有三大特性,封装.继承和多态.对于ES5来说,没有class(类)的概念,并且由于JS的函数级作用域(函数内部的变量在函数外访问不到),所以我们就可以 ...

  4. virtualbox+vagrant学习-2(command cli)-18-vagrant ssh-config命令

    SSH Config 格式: vagrant ssh-config [options] [name|id] 这将从SSH直接将SSH配置文件的有效配置输出到正在运行的vagrant 计算机(而不是使用 ...

  5. 1、Orcal下载安装步骤图文详解

    1.Orcal官方下载地址: https://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.htm ...

  6. 内存,缓存,cpu,硬盘关系

    RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序.我把它叫耗电存储器 ROM(Read-Only Memory)即只 ...

  7. webStorm常用设置之过滤文件夹

    webStorm是一款很好用的前端IDE,但是不能否认的是webStorm很重,没有sublime轻便 尤其是项目cnpm后,加载node_modules时的状态,简直想那块豆腐自杀有莫有,就算你耐心 ...

  8. OpenGL ES天空盒子效果

    一.理解 利用GLKBaseEffect,自定义顶点着色器和片元着色器,结合天空盒子,展示效果 二.技术代码 CCSkyBoxEffect:天空盒子效果类: CCSkyboxShader.vsh:顶点 ...

  9. TMS Xdata Server

    Xdata 在TMS中扮演的桥的角色,一年前仔细看过TMS 的源码,当时对流程很清晰,随着时间慢慢的过去,现在该忘记的都忘记了.所以用此文章来记录自己对Xdata还剩下的一点点的记忆... 光有xda ...

  10. 一图看懂hadoop MapReduce工作原理

    MapReduce执行流程及单词统计WordCount示例