main
黄海 3 years ago
parent 5df896f570
commit abe08b88ba

@ -236,7 +236,7 @@ a:hover {color: #dd0000;}
/*20150925 modify*/ /*20150925 modify*/
.loginV2 .form-con{ width:380px; height:auto; padding:0;} .loginV2 .form-con{ width:380px; height:270px; padding:0;}
.shortLogin .form-con{ position:relative; width:300px; height:auto; padding:52px 40px 0;} .shortLogin .form-con{ position:relative; width:300px; height:auto; padding:52px 40px 0;}
.loginV2 .login-normal,.loginV2 .login-partner{ width:300px; padding:40px 40px 0;} .loginV2 .login-normal,.loginV2 .login-partner{ width:300px; padding:40px 40px 0;}
.loginV2 .form-error{ top:7px;} .loginV2 .form-error{ top:7px;}

@ -12,7 +12,7 @@
<body> <body>
<div id="header"> <div id="header">
<img src="/FengHuang/images/hebyesz.png" style="margin-left: 30px;margin-top: 8px;"/> <img src="/FengHuang/images/school_logo.jpg" style="margin-left: 30px;margin-top: 8px;width: 80px;height:80px"/>
<span style="font-size:36px;display: block;margin-left: 133px;margin-top: -58px;font-weight:bold" <span style="font-size:36px;display: block;margin-left: 133px;margin-top: -58px;font-weight:bold"
id="system_name"></span> id="system_name"></span>
</div> </div>
@ -44,7 +44,15 @@
<input type="password" name="password" id="passwordTxt" value="" class="input-text" <input type="password" name="password" id="passwordTxt" value="" class="input-text"
placeholder="请输入密码"></dd> placeholder="请输入密码"></dd>
</dl> </dl>
<dl class="top2 clearfix">
<dt>验证码:</dt>
<dd>
<input name="smsCaptcha" type="text" id="captchaTxt" class="input-yzm" maxlength="4" autocomplete="off" />
<span class="span-yzm">
<img id="userCaptchaImage" src="/FengHuang/loginPerson/getCaptcha?id=1" title="点击图片刷新校验码" alt="点击图片刷新校验码" style="cursor:pointer" onclick="javascript:refreshCaptcha()" />
<a onclick="javascript:refreshCaptcha()" class="forget-pass" style="cursor:pointer">换一张</a></span>
</dd>
</dl>
<div class="btn-box clearfix" style="margin-top: 10px;"> <div class="btn-box clearfix" style="margin-top: 10px;">
<input id="loginBtn" class="btn-settlement" type="button" value="登 录" <input id="loginBtn" class="btn-settlement" type="button" value="登 录"
tjjj="passport.button.login"></div> tjjj="passport.button.login"></div>
@ -66,7 +74,6 @@
}); });
//获取页面信息,包括系统名称,版权信息 //获取页面信息,包括系统名称,版权信息
getPageInfo(); getPageInfo();
}); });
$(document).keydown(function (event) { $(document).keydown(function (event) {
@ -74,29 +81,38 @@
doLogin(); doLogin();
} }
}); });
//刷新验证码
function refreshCaptcha() {
$("#userCaptchaImage").attr("src", "/FengHuang/loginPerson/getCaptcha?id=" + new Date() + Math.floor(Math.random() * 24));
}
function doLogin() { function doLogin() {
var username = $("#usernameTxt").val(); var username = $("#usernameTxt").val();
var password = $("#passwordTxt").val(); var password = $("#passwordTxt").val();
userLogin(username, password); var captcha = $("#captchaTxt").val();
userLogin(username, password, captcha);
} }
//用户名登录 //用户名登录
function userLogin(username, password) { function userLogin(username, password,captcha) {
if (userLoginCheck(username, password)) { if (userLoginCheck(username, password,captcha)) {
$.ajax({ $.ajax({
type: "POST", type: "POST",
dataType: "json", dataType: "json",
url: "/FengHuang/loginPerson/doLogin", url: "/FengHuang/loginPerson/doLogin",
data: { data: {
"username": username, "username": username,
"password": password "password": password,
"captcha": captcha
}, },
async: false, async: false,
success: function (result) { success: function (result) {
if (result.success) { if (result.success && result.identity_id < 6) {
window.location.href = '/FengHuang/html/basicManage.html'; window.location.href = '/FengHuang/html/basicManage.html';
} else { }if (result.success && result.identity_id == 6) {
window.location.href = '/FengHuang/html/main.html';
}
else {
showError(result.msg); showError(result.msg);
} }
} }
@ -105,7 +121,7 @@
} }
//用户登录检查 //用户登录检查
function userLoginCheck(username, password) { function userLoginCheck(username, password,captcha) {
if (username == null || username == "") { if (username == null || username == "") {
showError("用户名不允许为空!"); showError("用户名不允许为空!");
return false; return false;
@ -114,6 +130,10 @@
showError("密码不允许为空!"); showError("密码不允许为空!");
return false; return false;
} }
if (captcha == null || captcha == "") {
showError("验证码不允许为空!");
return false;
}
return true; return true;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -24,7 +24,7 @@ public class IndexController extends Controller {
@Before({GET.class}) @Before({GET.class})
public void index() { public void index() {
redirect("/html/toupiao_login.html"); redirect("/html/login.html");
} }

@ -38,144 +38,6 @@ public class LoginPersonController extends Controller {
//实例化model //实例化model
LoginPersonModel model = new LoginPersonModel(); LoginPersonModel model = new LoginPersonModel();
@ActionApi(remark = "验证登录", summary = "验证登录", sort = 1)
@Params({
@Param(name = "username", remark = "用户名", required = true),
@Param(name = "password", remark = "密码", required = true),
@Param(name = "captcha", remark = "验证码", required = true)
})
public void touPiaodoLogin(String username, String password, String captcha) {
JSONObject resultJson = new JSONObject();
try {
if (StrKit.isBlank(captcha)) {
resultJson.put("success", false);
resultJson.put("message", "验证码不能为空!");
renderJson(resultJson);
return;
}
if (getSession().getAttribute("captcha") == null) {
resultJson.put("success", false);
resultJson.put("message", "在浏览器会话中没有检查到验证码,你的行为将会记录!");
renderJson(resultJson);
return;
}
String memory_captcha = getSession().getAttribute("captcha").toString().toLowerCase();
//验证码错误次数
String checkCodeKey = "Yzm_error_" + username;
int CheckCodeErrCnt = 4; //最多允许错几次 4+1
int CheckCodecntNum = 0; //错几次了
if (Redis.use().exists(checkCodeKey))
CheckCodecntNum = Integer.parseInt(Redis.use().get(checkCodeKey).toString());
if (CheckCodecntNum > CheckCodeErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "账号已被停用5分钟请稍后再试");
renderJson(resultJson);
return;
}
if (!memory_captcha.equals(captcha.toLowerCase())) {
CheckCodecntNum = 1;
if (Redis.use().exists(checkCodeKey))
CheckCodecntNum = Integer.parseInt(Redis.use().get(checkCodeKey).toString()) + CheckCodecntNum;
Redis.use().set(checkCodeKey, CheckCodecntNum);
Redis.use().expire(checkCodeKey, 60 * 5);
if (CheckCodecntNum == CheckCodeErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "验证码连续输入错误" + CheckCodecntNum + "次再错误一次将被封号5分钟");
renderJson(resultJson);
return;
}
if (CheckCodecntNum > CheckCodeErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "验证码连续输入错误5次账号被停用5分钟请稍后再试");
renderJson(resultJson);
return;
}
resultJson.put("success", false);
resultJson.put("message", "验证码不正确!");
renderJson(resultJson);
return;
}
if (StrKit.isBlank(username)) {
resultJson.put("success", false);
resultJson.put("message", "用户名不允许为空!");
renderJson(resultJson);
return;
}
if (StrKit.isBlank(password)) {
resultJson.put("success", false);
resultJson.put("message", "密码不允许为空!");
renderJson(resultJson);
return;
}
//检查缓存中此账号错误了几次
String PassWordKey = "WrongPassWord_" + username;
int ErrCnt = 4; //最多允许错几次 4+1
int cntNum = 0; //错几次了
if (Redis.use().exists(PassWordKey)) cntNum = Integer.parseInt(Redis.use().get(PassWordKey).toString());
if (cntNum > ErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "账号被停用5分钟请稍后再试");
renderJson(resultJson);
return;
}
//与前端配合RSA通用加密解密
try {
password = RsaUtils.decryptDataOnJava(password, RsaUtils.PRIVATEKEY);
} catch (Exception err) {
password = "!@#$%^&&*^*&(*)(*_)^%^$%$^%$^%";
}
String sql = "select * from t_toupiao_toupiaoren where toupiaoren_tel=?";
List<Record> list = Db.find(sql, username);
if (list.size() == 0) {
resultJson.put("success", false);
resultJson.put("message", "用户名或密码错误!");
renderJson(resultJson);
return;
}
if (!password.equals(username.substring(username.length() - 6))) {
//扩展支持连续输入用户名密码错误停用账号5分钟功能 2022.06.07
cntNum = 1;
if (Redis.use().exists(PassWordKey))
cntNum = Integer.parseInt(Redis.use().get(PassWordKey).toString()) + cntNum;
Redis.use().set(PassWordKey, cntNum);
Redis.use().expire(PassWordKey, 60 * 5);
if (cntNum > ErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "密码连续输入" + (ErrCnt + 1) + "次全部错误账号将被停用5分钟");
renderJson(resultJson);
return;
}
if (cntNum == ErrCnt) {
resultJson.put("success", false);
resultJson.put("message", "用户名或密码连续错误你还有1次机会再次错误后账号将被封掉5分钟");
renderJson(resultJson);
return;
}
resultJson.put("success", false);
resultJson.put("message", "用户名或密码错误!");
renderJson(resultJson);
return;
}
//去掉限制
Redis.use().del(PassWordKey);
Redis.use().del(checkCodeKey);
CookieUtil.set(getResponse(), "toupiaoren_tel", username, false, true);
resultJson.put("success", true);
resultJson.put("toupiaoren_tel", username);
renderJson(resultJson);
} catch (Exception e) {
resultJson.put("success", false);
resultJson.put("message", "登录异常!");
renderJson(resultJson);
}
}
@ActionApi(remark = "验证登录", summary = "验证登录", sort = 1) @ActionApi(remark = "验证登录", summary = "验证登录", sort = 1)
@Params({ @Params({
@Param(name = "username", remark = "用户名", required = true), @Param(name = "username", remark = "用户名", required = true),
@ -260,12 +122,6 @@ public class LoginPersonController extends Controller {
renderJson(resultJson); renderJson(resultJson);
return; return;
} }
//与前端配合RSA通用加密解密
try {
password = RsaUtils.decryptDataOnJava(password, RsaUtils.PRIVATEKEY);
} catch (Exception err) {
password = "!@#$%^&&*^*&(*)(*_)^%^$%$^%$^%";
}
String passwordEncode = CommonUtil.getLdapPassword(password); String passwordEncode = CommonUtil.getLdapPassword(password);
BaseModel bm = new BaseModel(); BaseModel bm = new BaseModel();
Map loginMap = bm.getLoginInfoByUserName(username); Map loginMap = bm.getLoginInfoByUserName(username);

@ -3,7 +3,7 @@ undertow.devMode=true
undertow.port=9000 undertow.port=9000
undertow.host=0.0.0.0 undertow.host=0.0.0.0
#undertow.resourcePath =/usr/local/tomcat8/webapps/ccZhiChengTouPiao,classpath:static #undertow.resourcePath =/usr/local/tomcat8/webapps/ccZhiChengTouPiao,classpath:static
undertow.resourcePath =D:/dsWork/ccZhiChengTouPiao/WebRoot,classpath:static undertow.resourcePath =D:/dsWork/ZhuangJiaBing/WebRoot,classpath:static
# 目录名称 # 目录名称
undertow.contextPath=/FengHuang undertow.contextPath=/FengHuang

@ -3,7 +3,7 @@ undertow.devMode=true
undertow.port=9000 undertow.port=9000
undertow.host=0.0.0.0 undertow.host=0.0.0.0
#undertow.resourcePath =/usr/local/tomcat8/webapps/ccZhiChengTouPiao,classpath:static #undertow.resourcePath =/usr/local/tomcat8/webapps/ccZhiChengTouPiao,classpath:static
undertow.resourcePath =D:/dsWork/ccZhiChengTouPiao/WebRoot,classpath:static undertow.resourcePath =D:/dsWork/ZhuangJiaBing/WebRoot,classpath:static
# 目录名称 # 目录名称
undertow.contextPath=/FengHuang undertow.contextPath=/FengHuang

@ -1,12 +1 @@
http://10.10.11.124:9000/FengHuang http://10.10.11.124:9000/FengHuang
超级管理员
sys1
DsideaL4r5t6y7u
长春市第一中学管理员
dw2470
v1J3CHN
解决git每次提交代码都要输入帐号密码
https://blog.csdn.net/weixin_43795761/article/details/125011382

Loading…
Cancel
Save