login.ftl 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <#assign path="${request.contextPath}"/>
  5. <meta charset="utf-8">
  6. <meta name="renderer" content="webkit|ie-comp|ie-stand">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
  9. <meta http-equiv="Cache-Control" content="no-siteapp"/>
  10. <link rel="Bookmark" href="/favicon.ico" >
  11. <link rel="Shortcut Icon" href="/favicon.ico" />
  12. <link href="${path}/common/static/h-ui/css/H-ui.min.css" rel="stylesheet" type="text/css" />
  13. <link href="${path}/common/static/h-ui.admin/css/H-ui.login.css" rel="stylesheet" type="text/css" />
  14. <link href="${path}/common/static/h-ui.admin/css/style.css" rel="stylesheet" type="text/css" />
  15. <link href="${path}/common/css/login/login.css" rel="stylesheet" type="text/css" />
  16. <link href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" rel="stylesheet" type="text/css" />
  17. <!--[if IE 6]>
  18. <script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
  19. <script>DD_belatedPNG.fix('*');</script>
  20. <![endif]-->
  21. <title>后台登录 - Watero RST</title>
  22. <script type="text/javascript">
  23. var root_path = "${path}";
  24. </script>
  25. </head>
  26. <body>
  27. <!--<div class="header"></div>-->
  28. <div class="loginWraper">
  29. <div id="loginform" class="loginBox">
  30. <form class="form form-horizontal" method="post">
  31. <div class="row cl">
  32. <div class="formControls col-8 col-offset-3">
  33. <input id="login_name" autocomplete="off" name="login_name" type="text" placeholder="请输入账户" class="input-text size-L user_count">
  34. </div>
  35. </div>
  36. <div class="row cl">
  37. <div class="formControls col-8 col-offset-3">
  38. <input id="login_pwd" autocomplete="off" name="login_pwd" type="password" placeholder="请输入密码" class="input-text size-L pass_word">
  39. </div>
  40. </div>
  41. <div class="row cl">
  42. <div class="formControls col-8 col-offset-3">
  43. <input autocomplete="off" class="input-text size-L validate" id="login_code" name="login_code" type="text" placeholder="验证码">
  44. <img src="${path}/security_code?len=4" style="width: 100px;" id="next-code-img"> <a id="kanbuq" href="javascript:;">换一张</a> </div>
  45. </div>
  46. <div class="row">
  47. <div class="formControls col-8 col-offset-3">
  48. <label for="online">
  49. <input type="checkbox" name="online" id="remember_me" value="">&nbsp;&nbsp;使我保持登录状态</label>
  50. </div>
  51. </div>
  52. <div class="row loginbox_btn">
  53. <div class="formControls col-8 col-offset-3">
  54. <input name="" id="login-btn" type="submit" class="btn btn-block btn-primary radius size-L my-btn-login" value="&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;">
  55. </div>
  56. </div>
  57. </form>
  58. </div>
  59. </div>
  60. <script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
  61. <script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.js"></script>
  62. <script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
  63. <script type="text/javascript" src="${path}/common/lib/md5/md5.js"></script>
  64. <script>
  65. // 密码
  66. var pwd = null;
  67. // 换一张验证码实现
  68. $("#kanbuq").click(function() {
  69. nextVerifyCode();
  70. });
  71. function nextVerifyCode() {
  72. var url = $("#next-code-img").attr("src");
  73. $("#next-code-img").attr("src", url.split("?")[0] + "?len=4&v=" + Math.ceil(Math.random()*35));
  74. }
  75. // 执行登录
  76. $("#login-btn").click(function(){
  77. var login_name = $("#login_name").val();
  78. var re = /^[a-zA-z]\w{5,16}$/;
  79. if (!(re.test(login_name))) {
  80. layer.msg('用户名必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
  81. return false;
  82. }
  83. var login_pwd = $("#login_pwd").val();
  84. if (!(re.test(login_pwd))) {
  85. layer.msg('密码必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
  86. return false;
  87. }
  88. var login_code = $("#login_code").val();
  89. if (login_code.length != 4) {
  90. layer.msg('验证码必须为4位!',{icon: 5,time:2000});
  91. return false;
  92. }
  93. // 获取盐值
  94. $.post(root_path + "/get_salt",{"login_name":$("#login_name").val()},function(result){
  95. if (result.resultCode != 200 || result.returnCode != 200) {
  96. layer.msg('账户信息有误,请联系管理员!',{icon: 5,time:2000});
  97. nextVerifyCode();
  98. return false;
  99. }
  100. // 执行登录
  101. pwd = hex_md5(login_pwd + result.returnMsg.salt);
  102. $.post(root_path + "/login",{"login_name":login_name, "login_pwd":pwd, "login_code":login_code, "remember_me":$("#remember_me")[0].checked + ""},function(result){
  103. if (result.returnCode == 400) {
  104. layer.msg('验证码有误,请重新输入!',{icon: 5,time:3000});
  105. nextVerifyCode();
  106. return false;
  107. } else if (result.returnCode != 200) {
  108. layer.msg('登录有误,请重试!',{icon: 5,time:3000});
  109. nextVerifyCode();
  110. return false;
  111. } else {
  112. // 登陆成功,判断用户浏览器
  113. if (!checkClientType()) {
  114. // 电脑端
  115. } else {
  116. // 手机端
  117. }
  118. window.location.href = root_path + "/admin/sys/_index";
  119. }
  120. });
  121. });
  122. return false;
  123. });
  124. // 判断客户端类型
  125. function checkClientType() {
  126. var sUserAgent = navigator.userAgent.toLowerCase();
  127. var isIpad = sUserAgent.match(/ipad/i) == "ipad";
  128. var isIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
  129. var isAndroid = sUserAgent.match(/android/i) == "android";
  130. if (isIpad || isIphoneOs || isAndroid) {
  131. return 1;
  132. } else {
  133. return 0;
  134. }
  135. }
  136. </script>
  137. </body>
  138. </html>