登录会员名区分大小写,邮箱不区分大小写:

用户名 手机号存在了 tb_user表

邮箱存在了comm_company表

在登录时把 登录名 (username)和密码(password)带到后台,登录名可能是(用户名、邮箱、手机号)

jsp页面

function login(){
    var username = ("#username").val();<br><span style="white-space:pre;"></span>var password =("#username").val();
var password = (“#password”).val();
var code = ("#code_4").val();//验证码<br><span style="white-space:pre;"></span>var url = "("#code_4").val();//验证码
var url = "{ctx}/login/loginCheck.action”;
$.ajax({
type : “POST”,
url : url,
data : {
username : username,
password : password,
code:code
},
success : function(data) {
if(data*1==-1){
layer.msg(“验证码不正确!”, {
icon : 7
});
changeCode();//刷新验证码
}
else{
var status = data.split(“-“)[0];
var msg = data.split(“-“)[1];
if (status == 1) {

layer.msg(“登录成功”, {
icon : 1
});
//登录
window.location.href=”../fore/homepage/ftpage.action”;
}else if(status == 0){
layer.msg(“会员名不存在!”, {
icon : 7
});
changeCode()
}else if(status == 2){
layer.msg(“密码错误!”, {
icon : 7
});
changeCode();
}else{
layer.msg(“系统错误,请联系管理员!”, {
icon : 3
});

}
}
}
});
    }


java后台:(前台三个值,登录名和密码用对象接收)

   @RequestMapping("loginCheck")
  @ResponseBodypublic String loginCheck(User u,String  code,HttpServletResponse response, HttpSession session) {log.info("用户登录操作start!");//验证  验证码

String sessionCode = String.valueOf(session
.getAttribute(“VALIDATE_CODE”));
try {

//不知道这句什么意思
SecurityUtils.getSubject().logout();
String hashAlgorithmName = “MD5”; // 加密算法
int hashIterations = 1024; // 加密次数
Object pass = new SimpleHash(hashAlgorithmName, u.getPassword(), null, hashIterations);
String pas = pass.toString();
//判断登录名是否存在(见下面SQL)
boolean bool = userService.isExist(u);
if (bool) {
//根据登录名查询 对面登录密码
User user = userService.getUserByUME(u.getUsername());
if(user.getPassword().equals(pas)){
Subject subject = SecurityUtils.getSubject();
if (!subject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());
try {
subject.login(token);
向session中传user和company对象
subject.getSession().setAttribute(“sessionUser”, user);
subject.getSession().setAttribute(“sessionCompany”, companyService.CompanySelectByID(user.getCompanyId()));
if (!sessionCode.equals(code)) {
return “-1”;
}

return “1-登录成功!”;
} catch (AuthenticationException ae) {
log.info(“登录失败: ” + ae.getMessage());
}
}
}else{
return “2-密码错误!”;
}

} else {// 用户不存在
return “0-会员名不存在!”;
}
} catch (AuthenticationException e) {
e.printStackTrace();
log.error(e);
}
return “0-登录失败!”;
}



SQL:

查询登录名是否存在 返回int型
   

<select id=”selectCountname” parameterType=”com.wpp.sys.model.po.User” resultType=”int”>
      SELECT COUNT(*) FROM comm_company c    INNER   JOIN tb_user u ON u.companyId=c.id
       WHERE 1=1 AND (BINARY u.username = #{username} OR c.cpy_email =#{username})
</select>

查询登录名和密码 返回user对象
   <select id=”selectUserByUME” parameterType=”java.lang.String”
     resultType=”com.wpp.sys.model.po.User”>
SELECT u.* FROM comm_company c    INNER   JOIN tb_user u ON u.`companyId`=c.`id`
       WHERE 1=1 AND (BINARY u.username = #{username} OR c.`cpy_email` =#{username})
   </select>








        </div></div>

实现用户名、邮箱、手机号三种都可以登录相关推荐

  1. app中使用用户名/邮箱/手机号登录的思路分析

    摘要:app中使用用户名/邮箱/手机号登录的思路分析 1.客户端 客户端需要传递2个参数 account 代表:用户名/邮箱/手机号 password 代表:密码这里问题来了,那么如何判断识别用户输入 ...

  2. 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况

    三极管除了你知道的放大,饱和和截止三种工作状态之外,还有一种用得极少的"倒置"工作状态,就是你说的集电结正偏发射结反偏,这时跟对比放大状态的发射结正偏集电结反偏来理解," ...

  3. 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况...

    三极管除了你知道的放大,饱和和截止三种工作状态之外,还有一种用得极少的"倒置"工作状态,就是集电结正偏发射结反偏,这时跟对比放大状态的发射结正偏集电结反偏来理解,"倒置状 ...

  4. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  5. mysql 免密码进入_MySQL 5.7 三种免密码登录

    方法一:通过设置client标签,直接编辑/etc/my.cnf文件 [client] user=root password=123456port= 3306 我们直接输入mysql就可以进行登录my ...

  6. Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法

    编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...

  7. 电脑开机一会就蓝屏怎么回事_常见的电脑蓝屏是怎么回事?学会三种解决方法,远离电脑维修店...

    电脑蓝屏是我们常见的一种故障现象,它是系统无法从操作系统错误中恢复过来时表现的画面,有的是硬件问题引起,有的是软件问题引起,当我们遇到这种故障的时候,我们常常会通过关机重启的办法进行故障排除与解决,如 ...

  8. Qt三种方式实现FTP上传功能

    FTP协议 FTP的中文名称是"文件传输协议",是File Transfer Protocol三个英文单词的缩写.FTP协议是TCP/IP协议组中的协议之一,其传输效率非常高,在网 ...

  9. 用Spring更好地处理Struts动作三种整合

    http://java.chinaitlab.com/Spring/525537_2.html 为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 ...

最新文章

  1. win10红色警戒黑屏解决
  2. 1024块TPU在燃烧!BERT训练从3天缩短到76分钟 | 技术头条
  3. 按摩师-总预约时间最长
  4. C语言如何编写游戏界面,「分享」C语言如何编写图形界面
  5. Openfire配置过程,以及与php交互注意事项。
  6. IO多路转接之poll
  7. 如何使用Retrofit,OkHttp,Gson,Glide和Coroutines处理RESTful Web服务
  8. java矩阵类_java矩阵类,矩阵的乘法
  9. 计数原理,递推,求从左边能看到l个棒子,右边能看到r个棒子的方案数目
  10. 爬虫demo_全自动爬虫,你爱了么!解放双手的时刻
  11. JavaSE语法基础总结
  12. .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
  13. 学习可以借鉴的大牛们的网站
  14. POJ2104 K-th Number (平方分割 + 二分)
  15. 当客户端浏览器不支持相应版本的apple时自动下载运行环境JVM的解决办法!
  16. 【统计信号处理检测理论:CFAR检测】
  17. c++win32项目 如何显示后再删除一个绘图_Golden Software Surfer(三维绘图软件) 中文版分享...
  18. 新版iTunes如何设置手机铃声
  19. python学习——oop-python面向对象,类相关基础
  20. DFRobot离线语音识别模块真实测评

热门文章

  1. tplink打印机服务器重置,TP-Link无线路由器打印机设置指南
  2. tif文件转为shp文件_从Tif文件转为shp文件(ArcMap,代码)、gdal打包问题
  3. c语言变量是直接寻址,直接寻址页变量
  4. kudu作为mysql从机_kudu 知识点学习(一)
  5. 用JS改变html样式
  6. linux常用命令_Linux常用命令总结
  7. 火山安卓RSA加解密操作
  8. [buuctf]ciscn_2019_ne_5
  9. 2022-2028全球与中国无线和多室音频市场现状及未来发展趋势
  10. I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?