实现用户名、邮箱、手机号三种都可以登录
登录会员名区分大小写,邮箱不区分大小写:
用户名 手机号存在了 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();
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);
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:
<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>
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>
实现用户名、邮箱、手机号三种都可以登录相关推荐
- app中使用用户名/邮箱/手机号登录的思路分析
摘要:app中使用用户名/邮箱/手机号登录的思路分析 1.客户端 客户端需要传递2个参数 account 代表:用户名/邮箱/手机号 password 代表:密码这里问题来了,那么如何判断识别用户输入 ...
- 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况
三极管除了你知道的放大,饱和和截止三种工作状态之外,还有一种用得极少的"倒置"工作状态,就是你说的集电结正偏发射结反偏,这时跟对比放大状态的发射结正偏集电结反偏来理解," ...
- 三极管(如NPN)集电极正偏 发射极反偏会怎么样呢? 电流会倒流吗? 其他三种都知道,就是不知道这种情况...
三极管除了你知道的放大,饱和和截止三种工作状态之外,还有一种用得极少的"倒置"工作状态,就是集电结正偏发射结反偏,这时跟对比放大状态的发射结正偏集电结反偏来理解,"倒置状 ...
- Spring MVC 实战:三种方式获取登录用户信息
前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...
- mysql 免密码进入_MySQL 5.7 三种免密码登录
方法一:通过设置client标签,直接编辑/etc/my.cnf文件 [client] user=root password=123456port= 3306 我们直接输入mysql就可以进行登录my ...
- Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法
编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...
- 电脑开机一会就蓝屏怎么回事_常见的电脑蓝屏是怎么回事?学会三种解决方法,远离电脑维修店...
电脑蓝屏是我们常见的一种故障现象,它是系统无法从操作系统错误中恢复过来时表现的画面,有的是硬件问题引起,有的是软件问题引起,当我们遇到这种故障的时候,我们常常会通过关机重启的办法进行故障排除与解决,如 ...
- Qt三种方式实现FTP上传功能
FTP协议 FTP的中文名称是"文件传输协议",是File Transfer Protocol三个英文单词的缩写.FTP协议是TCP/IP协议组中的协议之一,其传输效率非常高,在网 ...
- 用Spring更好地处理Struts动作三种整合
http://java.chinaitlab.com/Spring/525537_2.html 为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 ...
最新文章
- win10红色警戒黑屏解决
- 1024块TPU在燃烧!BERT训练从3天缩短到76分钟 | 技术头条
- 按摩师-总预约时间最长
- C语言如何编写游戏界面,「分享」C语言如何编写图形界面
- Openfire配置过程,以及与php交互注意事项。
- IO多路转接之poll
- 如何使用Retrofit,OkHttp,Gson,Glide和Coroutines处理RESTful Web服务
- java矩阵类_java矩阵类,矩阵的乘法
- 计数原理,递推,求从左边能看到l个棒子,右边能看到r个棒子的方案数目
- 爬虫demo_全自动爬虫,你爱了么!解放双手的时刻
- JavaSE语法基础总结
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- 学习可以借鉴的大牛们的网站
- POJ2104 K-th Number (平方分割 + 二分)
- 当客户端浏览器不支持相应版本的apple时自动下载运行环境JVM的解决办法!
- 【统计信号处理检测理论:CFAR检测】
- c++win32项目 如何显示后再删除一个绘图_Golden Software Surfer(三维绘图软件) 中文版分享...
- 新版iTunes如何设置手机铃声
- python学习——oop-python面向对象,类相关基础
- DFRobot离线语音识别模块真实测评
热门文章
- tplink打印机服务器重置,TP-Link无线路由器打印机设置指南
- tif文件转为shp文件_从Tif文件转为shp文件(ArcMap,代码)、gdal打包问题
- c语言变量是直接寻址,直接寻址页变量
- kudu作为mysql从机_kudu 知识点学习(一)
- 用JS改变html样式
- linux常用命令_Linux常用命令总结
- 火山安卓RSA加解密操作
- [buuctf]ciscn_2019_ne_5
- 2022-2028全球与中国无线和多室音频市场现状及未来发展趋势
- I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?