ソースを参照

登录加密和登录验证码

seimin 1 年間 前
コミット
6db224fa46
共有4 個のファイルを変更した55 個の追加1 個の削除を含む
  1. 10 0
      css/login.css
  2. 39 1
      js/login.js
  3. 1 0
      libs/crypto-js.min.js
  4. 5 0
      login.html

+ 10 - 0
css/login.css

@@ -50,6 +50,16 @@
50 50
     padding: 38px 40px;
51 51
 }
52 52
 
53
+.login .captcha{
54
+  width: 50%;
55
+}
56
+
57
+.login .verificationCodeImg {
58
+  width: 50%;
59
+  margin-top: 18px;
60
+  height: 56px;
61
+}
62
+
53 63
 .login .title {
54 64
     color: #68686b;
55 65
     font-size: 24px;

+ 39 - 1
js/login.js

@@ -7,6 +7,23 @@ $(function () {
7 7
   var hasClick = false; //是否已经点击过登录按钮
8 8
   // 兼容ie的placeholder
9 9
   $('input, textarea').placeholder();
10
+  // 获取验证码
11
+  function getVerificationCodeImg(){
12
+    $('#verificationCodeImg').attr('src', baseUrl + "auth/getCaptcha?" + Date.now());
13
+  }
14
+  getVerificationCodeImg();
15
+  // 点击刷新验证码
16
+  $("#verificationCodeImg").on('click', getVerificationCodeImg);
17
+  //aes加密
18
+  function encryptByEnAESLogin(data) {
19
+    data = CryptoJS.enc.Utf8.parse(data);
20
+    let Key = CryptoJS.enc.Utf8.parse('Aes2Util666AQWER');
21
+    let tmpAES = CryptoJS.AES.encrypt(data, Key, {
22
+      mode: CryptoJS.mode.ECB,
23
+      padding: CryptoJS.pad.Pkcs7,
24
+    });
25
+    return tmpAES.toString();
26
+  }
10 27
   // 登录点击
11 28
   $('#login').on('click', login);
12 29
   // 登录方法
@@ -15,9 +32,11 @@ $(function () {
15 32
     hasClick = true;
16 33
     var name = $('#name').val()
17 34
     var pwd = $('#pwd').val()
35
+    var captcha = $('#captcha').val()
18 36
     var data = {
19 37
       username: name,
20
-      password: pwd
38
+      password: pwd,
39
+      captcha: captcha
21 40
     }
22 41
     // 单点登录 start
23 42
     var ssoStr = '';
@@ -26,8 +45,23 @@ $(function () {
26 45
       ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1];
27 46
       ssoStr = Base64.decode(decodeURIComponent(ssoStr));
28 47
       ssoJson = JSON.parse(ssoStr);
48
+    }else if(!name || !name.trim()){
49
+      alert("请输入用户名");
50
+      hasClick = false;
51
+      return;
52
+    }else if(!pwd || !pwd.trim()){
53
+      alert("请输入密码");
54
+      hasClick = false;
55
+      return;
56
+    }else if(!captcha || !captcha.trim()){
57
+      alert("请输入验证码");
58
+      hasClick = false;
59
+      return;
29 60
     }
30 61
     var postData = isSSo ? { username: ssoJson.a, password: ssoJson.r, t: false } : data;
62
+    postData = {
63
+        k: encryptByEnAESLogin(JSON.stringify(postData))
64
+    };
31 65
     // 单点登录 end
32 66
     $.ajax({
33 67
       type: "POST",
@@ -84,6 +118,10 @@ $(function () {
84 118
               console.log(e.responseText);
85 119
             }
86 120
           });
121
+        } else if(res.state == 403){
122
+          alert('验证码错误');
123
+          hasClick = false;
124
+          getVerificationCodeImg();
87 125
         } else {
88 126
           alert('用户名或密码错误,请重试!');
89 127
           hasClick = false;

File diff suppressed because it is too large
+ 1 - 0
libs/crypto-js.min.js


+ 5 - 0
login.html

@@ -12,6 +12,7 @@
12 12
     <script src="./libs/jquery-1.9.1.min.js"></script>
13 13
     <script src="./libs/jquery.placeholder.js"></script>
14 14
     <script src="./libs/base64.min.js"></script>
15
+    <script src="./libs/crypto-js.min.js"></script>
15 16
     <!--[if lt IE 10]>
16 17
         <script src="./libs/html5shiv.js"></script>
17 18
     <![endif]-->
@@ -28,6 +29,10 @@
28 29
                 <div class="title">用户登录</div>
29 30
                 <input id="name" type="text" placeholder="请输入用户名">
30 31
                 <input id="pwd" type="password" placeholder="请输入密码">
32
+                <div class="clearfix">
33
+                  <input class="captcha fl" id="captcha" type="text" placeholder="请输入验证码">
34
+                  <img class="verificationCodeImg fl" id="verificationCodeImg">
35
+                </div>
31 36
                 <button id="login">登录</button>
32 37
                 <p>推荐使用Google浏览器,其他浏览器可能出现兼容性问题</p>
33 38
                 <!-- <p class="login_reset" style="color: #005395;">账号为您的学工号,初始密码为您的学工号后4位</p> -->