MD5加密--项目案例
在项目中最尝使用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加密--项目案例的更多相关文章
- Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密
本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1. 摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...
- 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...
- 【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】
==================================================================================================== ...
- 记录新项目中遇到的技术及自己忘记的技术点【DES加密解密,MD5加密,字符串压缩、解压,字符串截取等操作】
一.DES加密.解密 #region DES加密解密 /// <summary> /// 进行DES加密 /// </summary> /// <param name=& ...
- JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册 显示错误信息到页面上的另一种方法: public ...
- 关于CryptoJS中md5加密以及aes加密的随笔
最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...
- Android数据加密之MD5加密
前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...
- java中使用MD5加密技术
在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...
- iOS,一行代码进行RSA、DES 、AES、MD5加密、解密
本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...
随机推荐
- reactor模型框架图和流程图 libevent
学习libevent有助于提升程序设计功力,除了网络程序设计方面外,libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏.函数指针.c语言的多态支持.链表和堆等等,都有助于提升自身 ...
- Tomcat6的相关配置
1. Tomcat无安装部署: 本文windows用的是win7,ubuntu用的是12.04 LTS,tomcat版本是1.6 1.1. windows上的tomcat无安装部署 1.1.1. 确认 ...
- python pandas dataframe 操作记录
从数据看select出数据后如何转换为dataframe df = DataFrame(cur.fetchall()) 如何更改列名,选取列,进行groupby操作 df.columns = ['me ...
- iOS 网络缓存总结
一.缓存策略: 1.缓存策略的配置: 缺省缓存策略的存储策略需要服务器的响应配置: 缺省缓存策略的使用需要请求端的配置: 2.缓存策略的缺陷: 移动端比较通用的缓存策略是先使用缓存同时更新本地数据: ...
- 【vue】跟着老马学习vue-数据双向绑定
学习了node.js教程,只能说是有了一定的了解,之前也了解了webpack和es6的核心内容,也看过vue2.0的官网教程,并结合视频看过项目,但是理解和运用仍然存在很多问题,接下来的一段时间,跟着 ...
- boost的初步了解
本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心. 名字本身就说明了一切:Asio 意即异步输入/输出. 该库可以让 C++ 异步地处理数据,且平台独立. 异步数据处理就是指,任务 ...
- Python自动化之session反解案例
session反解案例 from django.contrib.sessions.models import Session sess = Session.objects.get(pk='a92d67 ...
- java 泛型数组列表
如下代码: package com.company; import java.lang.reflect.Array; import java.util.ArrayList; public class ...
- haproxy + lvs异同(优点-缺点)
LVS和HAProxy相比,它的异同是什么? 1. 两者都是如软件负载均衡.但lVS是基于linux操作系统实现的一种软负载均衡,Haproxy是根据第三 方应用实现的软负载均衡. 2. LVS是 ...
- 针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法
Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauge ...