zoukankan      html  css  js  c++  java
  • 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加密登录演示完成!

  • 相关阅读:
    解决一起web 页面被劫持的案例
    django rest framwork教程之外键关系和超链接
    django restframwork 教程之authentication权限
    Puppet nginx+passenger模式配置
    Django restframwork教程之类视图(class-based views)
    使用emplace操作
    C++中的显示类型转换
    整数加法
    在不知道学生人数和每个学生课程数量的情况下对学生的平均成绩排序
    树的高度
  • 原文地址:https://www.cnblogs.com/yxllovetm/p/10357584.html
Copyright © 2011-2022 走看看