1.账号密码登录:获取用户名、密码,检验是否存在该账号,以及该账号是否有效(未冻结、未删除),检验密码是否正确

public Result<JSONObject> login(@RequestBody SysLoginModel sysLoginModel) throws Exception {
    Result<JSONObject> result = new Result<JSONObject>();
    String username = sysLoginModel.getUsername();
    String password = sysLoginModel.getPassword();
    //update-begin--Author:scott  Date:20190805 for:暂时注释掉密码加密逻辑,有点问题
    //前端密码加密,后端进行密码解密
    //password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密
    //update-begin--Author:scott  Date:20190805 for:暂时注释掉密码加密逻辑,有点问题

//1. 校验用户是否有效
    SysUser sysUser = sysUserService.getUserByName(username);
    result = sysUserService.checkUserIsEffective(sysUser);
    if(!result.isSuccess()) {
        return result;
    }

//2. 校验用户名或密码是否正确
    String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
    String syspassword = sysUser.getPassword();
        if (!syspassword.equals(userpassword)) {
            result.error500("用户名或密码错误");
        return result;
    }

//用户登录信息
    userInfo(sysUser, result);
    sysBaseAPI.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null);

return result;
}

2.短信验证码登录

2.1获取验证码:获取手机号、短信模板号-->随机产生验证码-->根据模板号发送登录模板,设置有效时间

public Result<String> sms(@RequestBody JSONObject jsonObject) {
    Result<String> result = new Result<String>();
    String phone = jsonObject.get("phone").toString();
    String smsmode=jsonObject.get("smsmode").toString();
    log.info(phone);
    Object object = redisUtil.get(phone);
    if (object != null) {
        result.setMessage("验证码10分钟内,仍然有效!");
        result.setSuccess(false);
        return result;
    }

//随机数
    String captcha = RandomUtil.randomNumbers(6);
    JSONObject obj = new JSONObject();
    obj.put("code", captcha);
    try {
        boolean b = false;
        //登录模板
        if (CommonConstant.SMS_TPL_TYPE_0.equals(smsmode)) {
            b = DySmsHelper.sendSms(phone, obj, DySmsEnum.LOGIN_TEMPLATE_CODE);
        }
        if (b == false) {
            result.setMessage("短信验证码发送失败,请稍后重试");
            result.setSuccess(false);
            return result;
        }
        //验证码10分钟内有效
        redisUtil.set(phone, captcha, 600);
        //update-begin--Author:scott  Date:20190812 for:issues#391
        //result.setResult(captcha);
        //update-end--Author:scott  Date:20190812 for:issues#391
        result.setSuccess(true);

} catch (ClientException e) {
        e.printStackTrace();
        result.error500(" 短信接口未配置,请联系管理员!");
        return result;
    }
    return result;
}

2.2 开通阿里云短信服务,得到accessKeyId和accessKeySecret

// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static  String accessKeyId;
static  String accessKeySecret;

2.3 查看是否存在该用户,若不存在,登录即注册,将该手机号存入数据库,检验验证码是否正确,错误输出提示信息,正确则登录成功

public Result UserPhoneLogin(@Valid  @RequestBody ApiLoginModel loginModel,BindingResult bindingResult) {
    Result<JSONObject> result = new Result<JSONObject>();
    String phone = loginModel.getPhone();
    //校验用户有效性
    MemberUser memberUser = memberUserService.getUserByPhone(phone);
    if(oConvertUtils.isEmpty(memberUser)) {
        //添加
        memberUserService.add(phone);
    }
    if(!result.isSuccess()) {
        return result;
    }
    String smscode = loginModel.getCaptcha();
    Object code = redisUtil.get(phone);
    if (!smscode.equals(code)) {
        result.setMessage("手机验证码错误");
        return result;
    }
    //添加日志
    sysBaseAPI.addLog("手机号: " + memberUser.getPhone() + ",登录成功!", CommonConstant.LOG_TYPE_1, null);
    result.setMessage("登录成功");
    return result;
}

java后台实现用户密码登录和手机短信登录相关推荐

  1. 使用java在项目完成手机短信登录

    手机号登录在现在的项目中用的场景非常多,实现起来也不难,今天我们就一起来通过演示实现登录过程. <1>首先需要注册个第三方的账户,比如秒嘀科技等,然后拿到三个参数值:QUERAY_PATH ...

  2. Spring Security系列(22)- Security实现手机短信登录功能

    准备 需求 采用手机号+短信验证码登录方式是很常见的一种需求. 那我们如何在Spring Security实现这种功能呢? 表单登录流程 首先再回顾一下用户名密码表单登录流程. 登录请求进入过滤器 调 ...

  3. 前端接收java验证码_在Web项目中手机短信验证码实现的全过程记录

    前言 最近在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下.下面话不多说了,来一起看看详细的介绍吧. 短信验证码实 ...

  4. 手机短信登录、邮箱登录、QQ 登录都想要,咋办?

    文章目录 1. ModularRealmAuthenticator 1.1 Realm 去哪了? 1.2 ModularRealmAuthenticator 怎么玩 2. Authentication ...

  5. iphone换android 短信,iPhone用户换手机后出了大问题 iPhone用户更换为Android手机短信失踪介绍...

    之前有消息称,当iPhone用户将手机更换为Android手机后,有可能出现其他联系人无法成功向Android手机发送短信的问题.目前,据BusinessInsider网站报道,苹果正被一位前iPho ...

  6. cas5.3.9自定义手机短信验证码登录

    cas自定义多种登录方式 cas添加手机短信验证码登录 cas添加手机短信验证码登录 全部基于SpringBoot,以及SpringWebflow开发,请在有此基础再进行学习! 添加Maven依赖 & ...

  7. 青龙2.10.13 稳定版+对接傻妞教程+短信登录+傻妞WEB控制台 超级详细

    此文章引用大佬的教程,进行更详细的阐述.如有疑问请进交流群332461037 我用的系统是centos7.6 目录 一.重装系统 1.选择centos7.6系统 2.重置服务器密码 3.服务器开放端口 ...

  8. Security之短信登录篇

    1.功能实现 Security默认提供的是用户名密码登录模式,然后我们参考用户名密码登录自定义实现短信登录模式 这样就多了一种登录模式,在登录的时候可以自行选择登录模式 2.security07 子工 ...

  9. SpringSecurity-9-实现通过手机短信进行认证功能

    SpringSecurity-9-实现通过手机短信进行认证功能 手机短信流程分析 手机号登录的时候是不需要密码登录的,而是通过短信验证码实现免密登录.具体步骤如下 : 向手机发送验证码,第三方短信发送 ...

最新文章

  1. 浅谈Android系统开发中LOG的使用
  2. 我的log4j与logback简易配置
  3. java并发synchronized 锁的膨胀过程(锁的升级过程)深入剖析(1)
  4. python练习题-day25
  5. 终于解决H3C交换机reset saved-configuration后不能启动的问题
  6. DotLucene源码浅读笔记(1) : Lucene.Net.Analysis 【转】
  7. Google Translation Via Python
  8. paip.java c# .net php python调用c++ c dll so windows api 总结
  9. FFmpeg Windows版 官网下载与安装
  10. 被玩坏的“网抑云音乐“可视化数据分析
  11. python自动保存图片_python抓取豆瓣图片并自动保存示例学习
  12. x4无法在此计算机上安装,错误写入注册表键_cdrx4安装提示不能将数值写入键_错误写入注册表键...
  13. java启动报错Port already in use: 1099
  14. 【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门
  15. 鸿蒙:这个备胎不太冷
  16. Day29 - Countdown Timer
  17. jarvis OJ web babyphp
  18. hibernate一对一主键唯一外键关联(二)
  19. 发送手机验证码,验证手机验证码,包括数据表的设计
  20. MATLAB下载时报错原因

热门文章

  1. springboot风电检测物联网平台JAVA源码 iot物联网源码
  2. Android使用SharedPreferences保存账号密码
  3. 基于 java+springboot+vue 的酒店⺠宿⽹站毕业设计源码250910
  4. docker 镜像一执行状态就变成 Exited 的原因
  5. 微信小程序日期与时间选择器
  6. jsp遇到异常转到错误页面
  7. 【谈谈知识点】BST(无指针)
  8. 阿里的Leader为什么牛逼?秘密都在“三板斧”里...
  9. 学习通信原理之——用泰勒级数证明欧拉公式
  10. Mongodb更新数组$sort操作符