Commit 038eff3d89398eadccbd8162e807e584b2ff0cef

Authored by 王通
1 parent a78c21b5

1.修改密码时加入强度校验

src/main/resources/static/pages/permission/user/changePWD.html
1 -<div class="row">  
2 -<div class="col-md-12">  
3 -<!-- BEGIN VALIDATION STATES-->  
4 -<div class="portlet light portlet-fit portlet-form bordered">  
5 -<div class="portlet-body">  
6 - <form class="form-horizontal" id="changePWDForm">  
7 - <div class="form-group" style="margin-top: 60px">  
8 - <label class="control-label col-md-5">原始密码:  
9 - </label>  
10 - <div class="col-md-4">  
11 - <div class="input-icon right">  
12 - <i class="fa"></i>  
13 - <input type="password" class="form-control" name="oldPWD" /> </div>  
14 - </div>  
15 - </div>  
16 - <div class="form-group">  
17 - <label class="control-label col-md-5">输入新密码:  
18 - </label>  
19 - <div class="col-md-4">  
20 - <div class="input-icon right">  
21 - <i class="fa"></i>  
22 - <input type="password" class="form-control" name="newPWD" /> </div>  
23 - </div>  
24 - </div>  
25 - <div class="form-group">  
26 - <label class="control-label col-md-5">确认新密码:  
27 - </label>  
28 - <div class="col-md-4">  
29 - <div class="input-icon right">  
30 - <i class="fa"></i>  
31 - <input type="password" class="form-control" name="cnewPWD" /> </div>  
32 - </div>  
33 - </div>  
34 - <div class="form-actions">  
35 - <div class="row">  
36 - <div class="col-md-offset-5 col-md-7">  
37 - <button type="button" id="confirm" class="btn green">确定</button>  
38 - <button type="reset" class="btn default">取消</button>  
39 - </div>  
40 - </div>  
41 - </div>  
42 - </form>  
43 -</div>  
44 -</div>  
45 -</div>  
46 -</div>  
47 -  
48 -<script>  
49 -$(function(){  
50 - $("#confirm").on("click",function(){  
51 - var data = $('#changePWDForm').serializeJSON();  
52 - $.post('/user/changePWD',data,function(msg){  
53 - layer.alert(msg);  
54 - });  
55 - });  
56 -}); 1 +<div class="row">
  2 +<div class="col-md-12">
  3 +<!-- BEGIN VALIDATION STATES-->
  4 +<div class="portlet light portlet-fit portlet-form bordered">
  5 +<div class="portlet-body">
  6 + <form class="form-horizontal" id="changePWDForm">
  7 + <div class="alert alert-danger display-hide">
  8 + <button class="close" data-close="alert"></button>您的输入有误,请检查下面的输入项
  9 + </div>
  10 + <div class="form-group" style="margin-top: 60px">
  11 + <label class="control-label col-md-5">原始密码:
  12 + </label>
  13 + <div class="col-md-4">
  14 + <div class="input-icon right">
  15 + <i class="fa"></i>
  16 + <input type="password" class="form-control" name="oldPWD" /> </div>
  17 + </div>
  18 + </div>
  19 + <div class="form-group">
  20 + <label class="control-label col-md-5">输入新密码:
  21 + </label>
  22 + <div class="col-md-4">
  23 + <div class="input-icon right">
  24 + <i class="fa"></i>
  25 + <input type="password" class="form-control" name="newPWD" id="newPWD"/> </div>
  26 + </div>
  27 + </div>
  28 + <div class="form-group">
  29 + <label class="control-label col-md-5">确认新密码:
  30 + </label>
  31 + <div class="col-md-4">
  32 + <div class="input-icon right">
  33 + <i class="fa"></i>
  34 + <input type="password" class="form-control" name="cnewPWD" /> </div>
  35 + </div>
  36 + </div>
  37 + <div class="form-actions">
  38 + <div class="row">
  39 + <div class="col-md-offset-5 col-md-7">
  40 + <button type="submit" id="confirm" class="btn green">确定</button>
  41 + <button type="reset" class="btn default">取消</button>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </form>
  46 +</div>
  47 +</div>
  48 +</div>
  49 +</div>
  50 +
  51 +<script>
  52 +$(function(){
  53 + var form = $('#changePWDForm');
  54 + //表单 validate
  55 + var error = $('.alert-danger', form);
  56 +
  57 + var validate = function (pwd) {
  58 + var flag = true;
  59 + for (var i = 1; i < pwd.length - 1; i++) {
  60 + var first = pwd.charCodeAt(i - 1);
  61 + var second = pwd.charCodeAt(i);
  62 + var third = pwd.charCodeAt(i + 1);
  63 + if (!(first >= 48 && third <= 57 || first >= 65 && third <= 90 || first >= 97 && third <= 122)) {
  64 + continue;
  65 + }
  66 + if (third - second == 1 && second - first == 1) {
  67 + flag = false;
  68 + }
  69 + }
  70 +
  71 + return flag;
  72 + }
  73 +
  74 + $.validator.addMethod("passwordrule", function(value, element) {
  75 + var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*?[#?!@$%^&*-.]).{8,16}$/;
  76 + return this.optional(element) || reg.test(value) && validate(value);
  77 + }, "需包含大小写字母、数字、以及特殊符号的8-16位字符,并不能有123、abc这样的连续字符");
  78 +
  79 + //表单 validate
  80 + form.validate({
  81 + errorElement : 'span',
  82 + errorClass : 'help-block help-block-error',
  83 + focusInvalid : false,
  84 + rules : {
  85 + 'newPWD' : {
  86 + required : true,
  87 + minlength: 6,
  88 + maxlength: 16,
  89 + passwordrule:true
  90 + },
  91 + 'cnewPWD' : {
  92 + equalTo: '#newPWD'
  93 + }
  94 + },
  95 + invalidHandler : function(event, validator) {
  96 + error.show();
  97 + App.scrollTo(error, -200);
  98 + },
  99 +
  100 + highlight : function(element) {
  101 + $(element).closest('.form-group').addClass('has-error');
  102 + },
  103 +
  104 + unhighlight : function(element) {
  105 + $(element).closest('.form-group').removeClass('has-error');
  106 + },
  107 +
  108 + success : function(label) {
  109 + label.closest('.form-group').removeClass('has-error');
  110 + },
  111 +
  112 + submitHandler : function(f) {
  113 + var params = form.serializeJSON();
  114 + error.hide();
  115 + var keys;
  116 + $.ajax({
  117 + url: "/user/login/jCryptionKey?t="+Math.random(),
  118 + type: "Get",
  119 + async:false,
  120 + data: null,
  121 + success: function(data) {
  122 + keys = data.publickey;
  123 + }
  124 + });
  125 + //RSA加密
  126 + var encrypt = new JSEncrypt();
  127 + encrypt.setPublicKey(keys);
  128 + params.oldPWD = encrypt.encrypt(params.oldPWD);
  129 + params.newPWD = encrypt.encrypt(params.newPWD);
  130 + params.cnewPWD = encrypt.encrypt(params.cnewPWD);
  131 + $.ajax({
  132 + url: '/user/changePWD',
  133 + type: 'POST',
  134 + traditional: true,
  135 + data: params,
  136 + success: function(msg){
  137 + layer.alert(msg);
  138 + layer.closeAll('page');
  139 + }
  140 + });
  141 + }
  142 + });
  143 +});
57 </script> 144 </script>
58 \ No newline at end of file 145 \ No newline at end of file