Administrator 3 年之前
父節點
當前提交
acd8f34f47

+ 0 - 4
leiSP-admin/src/main/java/com/sooka/web/controller/system/SysLoginController.java

@@ -55,10 +55,6 @@ public class SysLoginController extends BaseController
     @ResponseBody
     public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe,HttpServletRequest request)
     {
-//        if(request.getSession().getAttribute("coderesult").toString().equals("false")){
-//            return error("验证码错误");
-//        }
-
 
         UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
         Subject subject = SecurityUtils.getSubject();

+ 12 - 2
leiSP-admin/src/main/java/com/sooka/web/controller/system/SysProfileController.java

@@ -23,9 +23,11 @@ import com.sooka.framework.util.ShiroUtils;
 import com.sooka.system.domain.SysUser;
 import com.sooka.system.service.ISysUserService;
 
+import java.util.regex.Pattern;
+
 /**
  * 个人信息 业务处理
- * 
+ *
  * @author lei_wang
  */
 @Controller
@@ -38,7 +40,7 @@ public class SysProfileController extends BaseController
 
     @Autowired
     private ISysUserService userService;
-    
+
     @Autowired
     private SysPasswordService passwordService;
 
@@ -85,6 +87,14 @@ public class SysProfileController extends BaseController
         {
             user.setSalt(ShiroUtils.randomSalt());
             user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt()));
+
+            //校验用户密码
+            String pattern = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";
+            boolean isMatch = Pattern.matches(pattern, newPassword);
+            if(!isMatch){
+                return error("密码必须包含大小写字母数组和特殊符号!");
+            }
+
             if (userService.resetUserPwd(user) > 0)
             {
                 ShiroUtils.setSysUser(userService.selectUserById(user.getUserId()));

+ 26 - 1
leiSP-admin/src/main/java/com/sooka/web/controller/system/SysUserController.java

@@ -1,9 +1,11 @@
 package com.sooka.web.controller.system;
 
 import java.util.List;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import com.business.slfh.tools.PinYinUtil;
+import com.sooka.system.mapper.SysUserMapper;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -30,6 +32,8 @@ import com.sooka.system.service.ISysPostService;
 import com.sooka.system.service.ISysRoleService;
 import com.sooka.system.service.ISysUserService;
 
+import javax.annotation.Resource;
+
 /**
  * 用户信息
  *
@@ -131,6 +135,14 @@ public class SysUserController extends BaseController
         {
             return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
         }
+
+        //校验用户密码
+        String pattern = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";
+        boolean isMatch = Pattern.matches(pattern, user.getPassword());
+        if(!isMatch){
+            return error("密码必须包含大小写字母数组和特殊符号!");
+        }
+
 //        else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
 //        {
 //            return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
@@ -188,6 +200,7 @@ public class SysUserController extends BaseController
     @GetMapping("/resetPwd/{userId}")
     public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
     {
+
         mmap.put("user", userService.selectUserById(userId));
         return prefix + "/resetPwd";
     }
@@ -207,17 +220,29 @@ public class SysUserController extends BaseController
             {
                 ShiroUtils.setSysUser(userService.selectUserById(user.getUserId()));
             }
+            //校验用户密码
+            String pattern = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";
+            boolean isMatch = Pattern.matches(pattern, user.getPassword());
+            if(!isMatch){
+                return error("密码必须包含大小写字母数组和特殊符号!");
+            }
             return success();
         }
         return error();
     }
 
+    @Resource
+    SysUserMapper sysUserMapper;
+
     @RequestMapping("resetPwdBatch")
+    @ResponseBody
     public AjaxResult resetPwdBatch(){
         List<SysUser> list = userService.selectUserList(new SysUser());
         for(SysUser s : list){
             s.setSalt(ShiroUtils.randomSalt());
-            s.setPassword(passwordService.encryptPassword(s.getLoginName(), "AbCd"+s.getPhonenumber(), s.getSalt()));
+            s.setPassword(passwordService.encryptPassword(s.getLoginName(), "AbCd%"+s.getPhonenumber(), s.getSalt()));
+            s.setUserId(s.getUserId());
+            sysUserMapper.updateUser(s);
         }
         return success();
     }

+ 61 - 44
leiSP-admin/src/main/resources/templates/login.html

@@ -10,6 +10,7 @@
     <link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>
     <link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
     <link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.3.1}" rel="stylesheet"/>
+    <link rel="stylesheet" href="../static/syslogin/lydl_base.css" th:href="@{/syslogin/lydl_base.css}">
     <!-- 360浏览器急速模式 -->
     <meta name="renderer" content="webkit">
     <!-- 避免IE使用兼容模式 -->
@@ -20,54 +21,70 @@
         if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location};
     </script>
 </head>
-<body class="signin">
-<div class="signinpanel">
-    <div class="row">
-        <div class="col-sm-7">
-            <div class="signin-info">
-                <div class="logopanel m-b">
-                    <h1><img alt="[ lei_wang ]" src="../static/sooka.png" th:src="@{/sooka.png}"></h1>
-                </div>
-                <div class="m-b"></div>
-                <h4>欢迎使用 </h4>
-                <ul class="m-b">
-                    <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>
-                    <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>
-                    <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>
-                    <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
-                    <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
-                </ul>
-                <strong th:if="${@config.getKey('sys.account.registerUser')}">还没有账号? <a th:href="@{/register}">立即注册&raquo;</a></strong>
-            </div>
+<body class="dl_body">
+<div class="dl_logo">
+    <!--<img src="../static/lydl_2.png" th:src="@{/lydl_2.png}"/>-->
+    <img src="../static/syslogin/lydl_2.png" th:src="@{/syslogin/lydl_2.png}"/>
+</div>
+<div class="dl_con">
+    <div style="position: absolute;top: 200px; left: 50px; font-size:20px; color: #ffffff">
+        六大系统模块<br>
+        <ul>
+            <li>1、森林防火监控系统</li>
+            <li>2、病虫害智能监控系统</li>
+            <li>3、乱砍乱伐智能监控系统</li>
+            <li>4、偷砂采石智能监控系统</li>
+            <li>5、毁林偷盗智能监控系统</li>
+            <li>6、APP移动监控系统</li>
+        </ul>
+        <br><br>
+        智能技术
+        <ul>
+            <li>1、摄像头自动巡航、实时抓拍</li>
+            <li>2、警戒头高清抓拍</li>
+            <li>3、历史画面存储、历史记录追查</li>
+            <li>4、可视化平台直观操作实时处理</li>
+            <li>5、现场画面实时回传</li>
+            <li>6、预案智能分析</li>
+            <li>7、大数据分析总结</li>
+        </ul>
+        <br><br>
+        主要技术
+        <ul>
+            <li>前端:bootstrap+vue</li>
+            <li>后端:springboot+mybatis</li>
+            <li>数据库及缓存: redis+mysql</li>
+            <li>操作系统:centos7</li>
+            <li>web中间件:tomcat</li>
+        </ul>
+    </div>
+    <form id="signupForm" autocomplete="off">
+        <div class="name_div">
+            <i><img src="../static/syslogin/lydl_4.png" th:src="@{/syslogin/lydl_4.png}"/></i>
+            <input type="text"     name="username"     placeholder="用户名" value=""    />
         </div>
-        <div class="col-sm-5">
-            <form id="signupForm" autocomplete="off">
-                <h4 class="no-margins">登录:</h4>
-                <input type="text"     name="username" class="form-control uname"     placeholder="用户名" value="admin"    />
-                <input type="password" name="password" class="form-control pword"     placeholder="密码"   value="123456" />
-                <div class="row m-t" th:if="${captchaEnabled==true}">
-                    <div class="col-xs-6">
-                        <input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
-                    </div>
-                    <div class="col-xs-6">
-                        <a href="javascript:void(0);" title="点击更换验证码">
-                            <img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
-                        </a>
-                    </div>
-                </div>
-                <div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'">
-                    <input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label>
-                </div>
-                <button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>
-            </form>
+        <div class="password_div">
+            <i><img src="../static/syslogin/lydl_5.png" th:src="@{/syslogin/lydl_5.png}"/></i>
+            <input type="password" name="password"    placeholder="密码"   value="" />
         </div>
-    </div>
-    <div class="signup-footer">
-        <div class="pull-left">
-            &copy; 2020 All Rights Reserved.  <br>
+
+        <div class="password_div" th:if="${captchaEnabled==true}">
+            <div class="col-xs-6">
+                <input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
+            </div>
+            <div class="col-xs-6">
+                <a href="javascript:void(0);" title="点击更换验证码">
+                    <img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
+                </a>
+            </div>
         </div>
-    </div>
+        <div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'">
+            <input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label>
+        </div>
+        <button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>
+    </form>
 </div>
+
 <script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
 <!-- 全局js -->
 <script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>

+ 1 - 0
leiSP-framework/src/main/java/com/sooka/framework/config/ShiroConfig.java

@@ -292,6 +292,7 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/common/download/resource/**", "anon,captchaValidate");
         filterChainDefinitionMap.put("/profile/upload/**", "anon,captchaValidate");
         filterChainDefinitionMap.put("/business/camera/**", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/system/user/resetPwdBatch/**", "anon,captchaValidate");
 
         // 注册相关
         filterChainDefinitionMap.put("/register", "anon,captchaValidate");

+ 1 - 0
leiSP-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -114,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
+		order by user_id asc
 	</select>
 
 	<select id="selectUserListByUserIds" parameterType="java.util.Map" resultMap="SysUserResult">