main
黄海 10 months ago
parent 8362b2c7d8
commit 1e3d3b2732

@ -12,9 +12,9 @@ COPY ./WebRoot /root/WebRoot
COPY ./target /root/target
# 安装中文字体
RUN apt-get update && apt-get install -y fonts-wqy-zenhei
#RUN apt-get update && apt-get install -y fonts-wqy-zenhei
# 设置环境变量
ENV LANG C.UTF-8
#ENV LANG C.UTF-8
#设置这个环境变量后您可以在Docker容器中启动Java应用程序时使用这些参数。
ENV JAVA_OPTS="-Xms512m -Xmx1024m"

@ -45,15 +45,6 @@
<input type="password" autocomplete="off" placeholder="密码" name="password" id="passwordTxt">
</div>
</div>
<div class="vcode">
<div class="vcode-li">
<img src="img/v-code.png">
<input type="text" placeholder="验证码" autocomplete="off" name="captcha" id="captchaTxt">
<img class="vcode-img" id="userCaptchaImage" src="/dsBase/loginPerson/getCaptcha"
alt="点击图片刷新校验码" style="cursor:pointer" onclick="javascript:refreshCaptcha()"/>
</div>
</div>
<input id="loginBtn" class="input-button" type="button" value="登&nbsp;&nbsp;&nbsp;录">
</form>
</div>
@ -72,10 +63,6 @@
getPageInfo();
});
//刷新验证码
function refreshCaptcha() {
$("#userCaptchaImage").attr("src", "/dsBase/loginPerson/getCaptcha?rnd=" + Math.random().toString().slice(-6));
}
$(document).keydown(function (event) {
if (event.keyCode === 13) {//回车键对应code值为13
@ -86,12 +73,11 @@
function doLogin() {
var username = $("#usernameTxt").val();
var password = $("#passwordTxt").val();
var captcha = $("#captchaTxt").val();
if (username.length === 0 || password.length === 0) {
alert("用户名或密码不允许为空!")
return;
}
userLogin(username, password, captcha);
userLogin(username, password);
}
//用户名登录
@ -100,15 +86,14 @@
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
if (userLoginCheck(username, password, captcha)) {
if (userLoginCheck(username, password)) {
$.ajax({
type: "POST",
dataType: "json",
url: "/dsBase/loginPerson/doLogin",
data: {
"username": username,
"password": encrypt.encrypt(password),
"captcha": captcha
"password": encrypt.encrypt(password)
},
async: false,
success: function (result) {
@ -135,19 +120,9 @@
alert("密码不允许为空!");
return false;
}
if (captcha == null || captcha == "") {
alert("验证码不允许为空!");
return false;
}
return true;
}
//开启错误提示
function showError(error) {
$(".form-error").find("label").html(error);
$(".form-error").show();
}
//获取页面信息

@ -31,59 +31,9 @@ public class LoginPersonController extends Controller {
LoginPersonModel model = new LoginPersonModel();
@Before({POST.class})
public void doLogin(String username, String password, String captcha) {
public void doLogin(String username, String password) {
JSONObject resultJson = new JSONObject();
try {
if (StrKit.isBlank(captcha)) {
resultJson.put("success", false);
resultJson.put("msg", "验证码不能为空!");
renderJson(resultJson);
return;
}
if (getSession().getAttribute("captcha") == null) {
resultJson.put("success", false);
resultJson.put("msg", "在浏览器会话中没有检查到验证码,你的行为将会记录!");
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("msg", "账号已被停用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, String.valueOf(CheckCodecntNum));
Redis.use().expire(checkCodeKey, 60 * 5);
if (CheckCodecntNum == CheckCodeErrCnt) {
resultJson.put("success", false);
resultJson.put("msg", "验证码连续输入错误" + CheckCodecntNum + "次再错误一次将被封号5分钟");
renderJson(resultJson);
return;
}
if (CheckCodecntNum > CheckCodeErrCnt) {
resultJson.put("success", false);
resultJson.put("msg", "验证码连续输入错误5次账号被停用5分钟请稍后再试");
renderJson(resultJson);
return;
}
resultJson.put("success", false);
resultJson.put("msg", "验证码不正确!");
renderJson(resultJson);
return;
}
if (StrKit.isBlank(username)) {
resultJson.put("success", false);
resultJson.put("msg", "用户名不允许为空!");
@ -143,7 +93,6 @@ public class LoginPersonController extends Controller {
}
//去掉限制
Redis.use().del(PassWordKey);
Redis.use().del(checkCodeKey);
//防止用户攻击修改Cookie
Map _map = new HashMap<String, String>();
_map.put("identity_id", loginMap.get("identity_id"));
@ -419,29 +368,4 @@ public class LoginPersonController extends Controller {
System.setProperty("java.awt.headless", "true");
}
/*****打印帐号和输出EXCEL的功能结束*********************************************************/
// /dsBase/loginPerson/getCaptcha
@Before({GET.class})
public void getCaptcha() {
HttpServletResponse response = getResponse();
// 设置相应类型,告诉浏览器输出的内容为图片
response.setContentType("image/jpeg");
// 不缓存此内容
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);
try {
HttpSession session = getRequest().getSession();
LineCaptcha captcha = CaptchaUtil.createLineCaptcha(80, 42, 4, 10);
// 重新生成code
captcha.createCode();
//写入session
session.removeAttribute("captcha");
session.setAttribute("captcha", captcha.getCode());
// 将内存中的图片通过流动形式输出到客户端
captcha.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
renderNull();
}
}
Loading…
Cancel
Save