login.ftl 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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 language="JavaScript" type="text/javascript">
  23. var root_path = "${path}";
  24. /*用于判断是否有父级页面,如果有就强制跳转*/
  25. function myfun(){
  26. var ifmObj = window.parent.PARENT_IS_LOGIN;
  27. if(ifmObj != null && ifmObj != "" && typeof(ifmObj) !="undefined" && ifmObj != undefined && ifmObj == 1){
  28. parent.location.href = "${path}/_login";
  29. }
  30. }
  31. window.onload = myfun;
  32. </script>
  33. </head>
  34. <body>
  35. <!--<div class="header"></div>-->
  36. <div class="loginWraper">
  37. <div id="loginform" class="loginBox">
  38. <form class="form form-horizontal" method="post">
  39. <div class="row cl">
  40. <div class="formControls col-8 col-offset-3">
  41. <input id="login_name" autocomplete="off" name="login_name" type="text" placeholder="请输入账户" class="input-text size-L user_count">
  42. </div>
  43. </div>
  44. <div class="row cl">
  45. <div class="formControls col-8 col-offset-3">
  46. <input id="login_pwd" autocomplete="off" name="login_pwd" type="password" placeholder="请输入密码" class="input-text size-L pass_word">
  47. </div>
  48. </div>
  49. <div class="row cl">
  50. <div class="formControls col-8 col-offset-3">
  51. <input autocomplete="off" class="input-text size-L validate" id="login_code" name="login_code" type="text" placeholder="验证码">
  52. <img src="${path}/security_code?len=4" style="width: 100px;" id="next-code-img"> <a id="kanbuq" href="javascript:;">换一张</a> </div>
  53. </div>
  54. <div class="row">
  55. <div class="formControls col-8 col-offset-3">
  56. <label for="online">
  57. <input type="checkbox" name="online" id="remember_me" value="">&nbsp;&nbsp;使我保持登录状态</label>
  58. </div>
  59. </div>
  60. <div class="row loginbox_btn">
  61. <div class="formControls col-8 col-offset-3">
  62. <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;">
  63. </div>
  64. </div>
  65. </form>
  66. </div>
  67. </div>
  68. <script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
  69. <script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.js"></script>
  70. <script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
  71. <script type="text/javascript" src="${path}/common/lib/md5/md5.js"></script>
  72. <script>
  73. // 密码
  74. var pwd = null;
  75. // 换一张验证码实现
  76. $("#kanbuq").click(function() {
  77. nextVerifyCode();
  78. });
  79. function nextVerifyCode() {
  80. var url = $("#next-code-img").attr("src");
  81. $("#next-code-img").attr("src", url.split("?")[0] + "?len=4&v=" + Math.ceil(Math.random()*35));
  82. }
  83. // 执行登录
  84. $("#login-btn").click(function(){
  85. var login_name = $("#login_name").val();
  86. var re = /^[a-zA-z]\w{5,16}$/;
  87. if (!(re.test(login_name))) {
  88. layer.msg('用户名必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
  89. return false;
  90. }
  91. var login_pwd = $("#login_pwd").val();
  92. if (!(re.test(login_pwd))) {
  93. layer.msg('密码必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
  94. return false;
  95. }
  96. var login_code = $("#login_code").val();
  97. if (login_code.length != 4) {
  98. layer.msg('验证码必须为4位!',{icon: 5,time:2000});
  99. return false;
  100. }
  101. // 获取盐值
  102. $.post(root_path + "/get_salt",{"login_name":$("#login_name").val()},function(result){
  103. if (result.resultCode != 200 || result.returnCode != 200) {
  104. layer.msg('账户信息有误,请联系管理员!',{icon: 5,time:2000});
  105. nextVerifyCode();
  106. return false;
  107. }
  108. // 执行登录
  109. pwd = hex_md5(login_pwd + result.returnMsg.salt);
  110. $.post(root_path + "/login",{"login_name":login_name, "login_pwd":pwd, "login_code":login_code, "remember_me":$("#remember_me")[0].checked + ""},function(result){
  111. if (result.returnCode == 400) {
  112. layer.msg('验证码有误,请重新输入!',{icon: 5,time:3000});
  113. nextVerifyCode();
  114. return false;
  115. } else if (result.returnCode != 200) {
  116. layer.msg('登录有误,请重试!',{icon: 5,time:3000});
  117. nextVerifyCode();
  118. return false;
  119. } else {
  120. // 登陆成功,判断用户浏览器
  121. if (!checkClientType()) {
  122. // 电脑端
  123. } else {
  124. // 手机端
  125. }
  126. window.location.href = root_path + "/admin/sys/_index";
  127. }
  128. });
  129. });
  130. return false;
  131. });
  132. // 判断客户端类型
  133. function checkClientType() {
  134. var sUserAgent = navigator.userAgent.toLowerCase();
  135. var isIpad = sUserAgent.match(/ipad/i) == "ipad";
  136. var isIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
  137. var isAndroid = sUserAgent.match(/android/i) == "android";
  138. if (isIpad || isIphoneOs || isAndroid) {
  139. return 1;
  140. } else {
  141. return 0;
  142. }
  143. }
  144. </script>
  145. </body>
  146. </html>