实现用户名、邮箱、手机号三种都可以登录
来源:互联网 发布:zimg php 编辑:程序博客网 时间:2024/05/13 21:46
登录会员名区分大小写,邮箱不区分大小写:
用户名 手机号存在了 tb_user表
邮箱存在了comm_company表
在登录时把 登录名 (username)和密码(password)带到后台,登录名可能是(用户名、邮箱、手机号)
jsp页面
function login(){
var username = $("#username").val();
var password = $("#password").val();
var code = $("#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 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>
- 实现用户名、邮箱、手机号三种都可以登录
- 怎么实现使用手机号、邮箱、用户名登录
- 手机号、邮箱或者用户名登录的实现方法
- 同时支持手机号、用户名、邮箱登录
- app中使用用户名/邮箱/手机号登录的思路分析
- Spring Security实现用户名或者手机号登录
- shopnc 实现手机、邮箱、用户名登录
- 简单实现支持用户名和邮箱登录
- 注册时验证用户名(可以是普通用户名、手机号和邮箱)的合法规则(easyui)
- ecshop二次开发--邮箱、手机号、用户名登陆
- ecshop二次开发--邮箱、手机号、用户名登陆
- ecshop二次开发--邮箱、手机号、用户名登陆
- sql and&or用法 实现jsp邮箱或者用户名登录
- 数据库按照手机号分库后,还需要允许用户使用邮箱、用户名等登录,怎么才能提高查询效率?
- android 判断登录是否邮箱或手机号
- js注册检测 用户名、密码、手机号、邮箱等
- 常用手机号,邮箱,用户名 ,昵称校验工具类
- ECSHOP同时使用用户名、邮箱、手机号码登录
- QT 5.4 各版本下载地址
- 遥感图像几何校正
- VMware中四种网络连接模式的区别
- MVC模式
- 通过堆实现一个优先队列,
- 实现用户名、邮箱、手机号三种都可以登录
- 一年
- 《化学教学论》总结
- linux 用户和用户组
- 迭代器、增强for、泛型
- 正则表达式
- 迭代和递归基本思想
- 【HDU
- Spark内存管理模型