瀏覽代碼

调整心跳机制以及阿涛配置功能页面修改

xusl 1 年之前
父節點
當前提交
9d13d04a8d

+ 1 - 1
backend/src/main/java/com/jiayue/ssi/controller/SysUserController.java

@@ -833,7 +833,7 @@ public class SysUserController {
             activeUserDto.setAuthentication(authentication);
             activeUserDto.setHttpServletRequest(request);
             CacheConstants.ACTIVE_USER_MAP.put(sysUser.getUsername(),activeUserDto);
-            LocalCache.set(CacheConstants.HEART_KEY+sysUser.getUsername(),"在线",4000);
+            LocalCache.set(CacheConstants.HEART_KEY+sysUser.getUsername(),"在线",5000);
             System.out.println("存心跳:"+DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
             return ResponseVO.success();
         } catch (Exception e) {

+ 2 - 3
backend/src/main/java/com/jiayue/ssi/entity/SysPolicy.java

@@ -1,8 +1,6 @@
 package com.jiayue.ssi.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -86,5 +84,6 @@ public class SysPolicy extends BaseEntity{
     /**
      * 可审计事件(0-NWP;1-DQ)
      */
+    @TableField(value = "auditable_event",fill = FieldFill.INSERT_UPDATE)
     private String auditableEvent;
 }

+ 176 - 179
backend/src/main/java/com/jiayue/ssi/filter/JwtAuthenticationTokenFilter.java

@@ -68,220 +68,217 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws
             ServletException, IOException {
 //        SecurityContextHolder.getContext().getAuthentication();
-        String token = request.getHeader("Authorization");
-        if (!StringUtils.isEmpty(token)) {
-            String username = "";
-            try {
-                Claims claims = jwtTokenUtil.getClaimsFromToken(token);
-                if (claims==null){
-                    // 无效token
-                    ResponseInfo.doResponse(response, "令牌无效,请重新登录!", 406);
-                    return;
-                }
+        if (!request.getRequestURI().equals("/getVerifyCode") && !request.getRequestURI().equals("/getMailCode")) {
 
-                username = claims.getSubject();
-                if (username != null) {
-                    if (CacheConstants.LOGIN_TOKEN_MAP.get(username) == null) {
+            String token = request.getHeader("Authorization");
+            if (!StringUtils.isEmpty(token)) {
+                String username = "";
+                try {
+                    Claims claims = jwtTokenUtil.getClaimsFromToken(token);
+                    if (claims == null) {
+                        // 无效token
                         ResponseInfo.doResponse(response, "令牌无效,请重新登录!", 406);
                         return;
-                    } else {
-                        String cacheToken = CacheConstants.LOGIN_TOKEN_MAP.get(username);
-                        //内存token和当前token一致  说明是当前登陆用户访问
-                        if (!token.equals(cacheToken)) {
-                            ResponseInfo.doResponse(response, "账号已在另一台机器登录,请重新登录!", 406);
+                    }
+
+                    username = claims.getSubject();
+                    if (username != null) {
+                        if (CacheConstants.LOGIN_TOKEN_MAP.get(username) == null) {
+                            ResponseInfo.doResponse(response, "令牌无效,请重新登录!", 406);
                             return;
+                        } else {
+                            String cacheToken = CacheConstants.LOGIN_TOKEN_MAP.get(username);
+                            //内存token和当前token一致  说明是当前登陆用户访问
+                            if (!token.equals(cacheToken)) {
+                                ResponseInfo.doResponse(response, "账号已在另一台机器登录,请重新登录!", 406);
+                                return;
+                            }
                         }
                     }
-                }
 
-                if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
-                    UserDetails userDetails = userServiceImpl.loadUserByUsername(username);
-                    SysUser user = (SysUser) userDetails;
-                    if (user.getStatus().equals("2")){
-                        ResponseInfo.doResponse(response, "账号已注销,不能登录!", 406);
-                        return;
-                    }
-                    if (user.getExpDate() != null) {
-                        // 判断账号截止日期
-                        Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
-                        if (new Date().after(lastDate)) {
-                            if ("0".equals(user.getStatus())){
-                                // 将正常状态变为锁定
+                    if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
+                        UserDetails userDetails = userServiceImpl.loadUserByUsername(username);
+                        SysUser user = (SysUser) userDetails;
+                        if (user.getStatus().equals("2")) {
+                            ResponseInfo.doResponse(response, "账号已注销,不能登录!", 406);
+                            return;
+                        }
+                        if (user.getExpDate() != null) {
+                            // 判断账号截止日期
+                            Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
+                            if (new Date().after(lastDate)) {
+                                if ("0".equals(user.getStatus())) {
+                                    // 将正常状态变为锁定
 //                            user.setLockTime(System.currentTimeMillis());
-                                user.setStatus("1");
-                                Boolean bo = sysUserService.updateUser(user);
-                                if (!bo){
-                                    log.info(user.getUsername()+"账号已过有效期被锁定失败");
-                                }
-                                else{
-                                    log.info(user.getUsername()+"账号已过有效期被锁定成功");
+                                    user.setStatus("1");
+                                    Boolean bo = sysUserService.updateUser(user);
+                                    if (!bo) {
+                                        log.info(user.getUsername() + "账号已过有效期被锁定失败");
+                                    } else {
+                                        log.info(user.getUsername() + "账号已过有效期被锁定成功");
+                                    }
                                 }
+                                ResponseInfo.doResponse(response, "账号已过有效期被锁定,请联系管理员!", 406);
+                                return;
                             }
-                            ResponseInfo.doResponse(response, "账号已过有效期被锁定,请联系管理员!", 406);
+                        }
+                        if ("1".equals(user.getStatus()) && user.getLockTime() == 0) {
+                            ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 406);
                             return;
                         }
+                        if (jwtTokenUtil.validateToken(token, userDetails)) {
+                            final UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
+                            String ip = IPUtils.getIpAddr(request);
+                            // token加入缓存,用于并发会话处理
+                            UserVisitInfoDto userVisitInfoDto = new UserVisitInfoDto();
+                            userVisitInfoDto.setUsername(username);
+                            userVisitInfoDto.setVtime(System.currentTimeMillis());
+                            userVisitInfoDto.setIp(ip);
+                            userVisitInfoDto.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
+                            // 获取客户端操作系统
+                            String os = userAgent.getOperatingSystem().getName();
+                            // 获取客户端浏览器
+                            String browser = userAgent.getBrowser().getName();
+                            userVisitInfoDto.setBrowser(browser);
+                            userVisitInfoDto.setOs(os);
+                            LoginConstants.sessionMap.put(username, userVisitInfoDto);
+
+                            // 将用户信息存入 authentication,方便后续校验
+                            UsernamePasswordAuthenticationToken
+                                    authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
+                            authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+                            // 将 authentication 存入 ThreadLocal,方便后续获取用户信息
+                            SecurityContextHolder.getContext().setAuthentication(authentication);
+                        }
                     }
-                    if ("1".equals(user.getStatus()) && user.getLockTime()==0){
-                        ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 406);
+                } catch (ExpiredJwtException expiredJwtException) {
+                    Claims claims = expiredJwtException.getClaims();
+                    String cacheToken = CacheConstants.LOGIN_TOKEN_MAP.get(username);
+                    //内存token和当前token一致  说明是当前登陆用户访问
+                    if (cacheToken != null && !token.equals(cacheToken)) {
+                        ResponseInfo.doResponse(response, "账号已在另一台机器登录,请重新登录!", 406);
+                        return;
+                    } else {
+                        // 登录连接超时,保存审计
+                        LoginFactory.recordLogininfor(claims.getSubject(), Constants.LOGIN_FAIL, "连接超时");
+                        // 将token存储内存中,便于重复登录比对
+                        CacheConstants.LOGIN_TOKEN_MAP.remove(claims.getSubject());
+                        LoginConstants.sessionMap.remove(claims.getSubject());
+                        ResponseInfo.doResponse(response, "令牌无效,请重新登录!", 406);
                         return;
                     }
-                    if (jwtTokenUtil.validateToken(token, userDetails)) {
-                        final UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
-                        String ip = IPUtils.getIpAddr(request);
-                        // token加入缓存,用于并发会话处理
-                        UserVisitInfoDto userVisitInfoDto = new UserVisitInfoDto();
-                        userVisitInfoDto.setUsername(username);
-                        userVisitInfoDto.setVtime(System.currentTimeMillis());
-                        userVisitInfoDto.setIp(ip);
-                        userVisitInfoDto.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
-                        // 获取客户端操作系统
-                        String os = userAgent.getOperatingSystem().getName();
-                        // 获取客户端浏览器
-                        String browser = userAgent.getBrowser().getName();
-                        userVisitInfoDto.setBrowser(browser);
-                        userVisitInfoDto.setOs(os);
-                        LoginConstants.sessionMap.put(username,userVisitInfoDto);
-
-                        // 将用户信息存入 authentication,方便后续校验
-                        UsernamePasswordAuthenticationToken
-                                authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
-                        authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
-                        // 将 authentication 存入 ThreadLocal,方便后续获取用户信息
-                        SecurityContextHolder.getContext().setAuthentication(authentication);
-                    }
-                }
-            }
-            catch (ExpiredJwtException expiredJwtException){
-                Claims claims = expiredJwtException.getClaims();
-                String cacheToken = CacheConstants.LOGIN_TOKEN_MAP.get(username);
-                //内存token和当前token一致  说明是当前登陆用户访问
-                if (cacheToken!=null && !token.equals(cacheToken)) {
-                    ResponseInfo.doResponse(response, "账号已在另一台机器登录,请重新登录!", 406);
-                    return;
                 }
-                else{
-                    // 登录连接超时,保存审计
-                    LoginFactory.recordLogininfor(claims.getSubject(), Constants.LOGIN_FAIL, "连接超时");
-                    // 将token存储内存中,便于重复登录比对
-                    CacheConstants.LOGIN_TOKEN_MAP.remove(claims.getSubject());
-                    LoginConstants.sessionMap.remove(claims.getSubject());
-                    ResponseInfo.doResponse(response, "令牌无效,请重新登录!", 406);
+
+                // 先判断非活动时长
+                if (LocalCache.get(CacheConstants.REACTIVE_KEY + token) == null) {
+                    ResponseInfo.doResponse(response, "超出非活动时长退出!", 406);
                     return;
-                }
-            }
+                } else {
+                    Long lastOperTime = (Long) LocalCache.get(CacheConstants.REACTIVE_KEY + token);
+                    // 获取非活动配置值
+                    SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
+                    Long expiration = sysPolicy.getInactiveLogout().longValue() * 1000 * 60L;
+                    if (System.currentTimeMillis() > lastOperTime + expiration) {
+                        SysOperLog operLog = new SysOperLog();
+                        operLog.setStatus(BusinessStatus.FAIL.ordinal());
+                        // 请求的地址
+                        String ip = IPUtils.getIpAddr();
+                        operLog.setOperIp(ip);
+                        operLog.setOperUrl(org.apache.commons.lang3.StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255));
+                        operLog.setOperName(username);
+                        // 设置请求方式
+                        operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
+                        operLog.setCreateBy(username);
+                        // 设置action动作
+                        operLog.setBusinessType(BusinessType.CTO.ordinal());
+                        // 设置标题
+                        operLog.setTitle("连接超时");
+                        // 操作描述
+                        operLog.setOperdesc("超出非活动时长");
+                        // 审计类型
+                        operLog.setAuditType(AuditType.SYS.ordinal());
+                        // 保存数据库
+                        OperateLogFactory.recordOper(operLog);
 
-            // 先判断非活动时长
-            if (LocalCache.get(CacheConstants.REACTIVE_KEY + token)==null){
-                ResponseInfo.doResponse(response, "超出非活动时长退出!", 406);
-                return;
-            }
-            else {
-                Long lastOperTime = (Long)LocalCache.get(CacheConstants.REACTIVE_KEY + token);
-                // 获取非活动配置值
-                SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
-                Long expiration = sysPolicy.getInactiveLogout().longValue()*1000*60L;
-                if (System.currentTimeMillis()>lastOperTime+expiration){
-                    SysOperLog operLog = new SysOperLog();
-                    operLog.setStatus(BusinessStatus.FAIL.ordinal());
-                    // 请求的地址
-                    String ip = IPUtils.getIpAddr();
-                    operLog.setOperIp(ip);
-                    operLog.setOperUrl(org.apache.commons.lang3.StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255));
-                    operLog.setOperName(username);
-                    // 设置请求方式
-                    operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
-                    operLog.setCreateBy(username);
-                    // 设置action动作
-                    operLog.setBusinessType(BusinessType.CTO.ordinal());
-                    // 设置标题
-                    operLog.setTitle("连接超时");
-                    // 操作描述
-                    operLog.setOperdesc("超出非活动时长");
-                    // 审计类型
-                    operLog.setAuditType(AuditType.SYS.ordinal());
-                    // 保存数据库
-                    OperateLogFactory.recordOper(operLog);
+                        LocalCache.remove(CacheConstants.REACTIVE_KEY + token);
 
-                    LocalCache.remove(CacheConstants.REACTIVE_KEY + token);
+                        SysUser sysUser = (SysUser) SecurityContextHolder.getContext().getAuthentication();
+                        // 设置用户离线状态
+                        sysUser.setOnlineStatus("1");
+                        sysUserService.updateUser(sysUser);
+                        CacheConstants.LOGIN_TOKEN_MAP.remove(sysUser.getUsername());
+                        LoginConstants.sessionMap.remove(sysUser.getUsername());
+                        Iterator<Map.Entry<String, String>> countMap = CacheConstants.IP_USER_MAP.entrySet().iterator();
+                        while (countMap.hasNext()) {
+                            Map.Entry<String, String> entry1 = countMap.next();
+                            String cacheusername = entry1.getValue();
+                            if (cacheusername.equals(sysUser.getUsername())) {
+                                countMap.remove();
+                            }
+                        }
 
-                    SysUser sysUser = (SysUser)SecurityContextHolder.getContext().getAuthentication();
-                    // 设置用户离线状态
-                    sysUser.setOnlineStatus("1");
-                    sysUserService.updateUser(sysUser);
-                    CacheConstants.LOGIN_TOKEN_MAP.remove(sysUser.getUsername());
-                    LoginConstants.sessionMap.remove(sysUser.getUsername());
-                    Iterator<Map.Entry<String, String>> countMap = CacheConstants.IP_USER_MAP.entrySet().iterator();
-                    while (countMap.hasNext()) {
-                        Map.Entry<String, String> entry1 = countMap.next();
-                        String cacheusername = entry1.getValue();
-                        if (cacheusername.equals(sysUser.getUsername())){
-                            countMap.remove();
+                        // 超出配置设定值则退出
+                        ResponseInfo.doResponse(response, "超出非活动时长退出!", 406);
+                        return;
+                    } else {
+                        if (!request.getRequestURI().equals("/sysUserController/establishHeart")) {
+                            LocalCache.set(CacheConstants.REACTIVE_KEY + token, System.currentTimeMillis(), 1000 * 60 * 60);
                         }
                     }
-
-                    // 超出配置设定值则退出
-                    ResponseInfo.doResponse(response, "超出非活动时长退出!", 406);
-                    return;
                 }
-                else{
-                    if (!request.getRequestURI().equals("/sysUserController/establishHeart")){
-                        LocalCache.set(CacheConstants.REACTIVE_KEY + token,System.currentTimeMillis(),1000*60*60);
+            } else {
+                if ("POST".equalsIgnoreCase(request.getMethod()) && defaultFilterProcessUrl.equals(request.getServletPath())) {
+                    String currentIp = IPUtils.getIpAddr();
+                    String ip = CacheConstants.IP_USER_MAP.get(currentIp);
+                    if (ip != null && !"".equals(ip)) {
+                        // 判断当前访问的ip是否已经存在,如果存在则不让任何用户访问
+                        ResponseInfo.doResponse(response, "您的客户端IP有用户正在使用,不能登录系统!", 405);
+                        return;
                     }
-                }
-            }
-        } else {
-            if ("POST".equalsIgnoreCase(request.getMethod()) && defaultFilterProcessUrl.equals(request.getServletPath())) {
-                String currentIp = IPUtils.getIpAddr();
-                String ip = CacheConstants.IP_USER_MAP.get(currentIp);
-                if (ip!=null && !"".equals(ip)){
-                    // 判断当前访问的ip是否已经存在,如果存在则不让任何用户访问
-                    ResponseInfo.doResponse(response, "您的客户端IP有用户正在使用,不能登录系统!", 405);
-                    return;
-                }
 
-                // 判断并发会话数是否满足
-                SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
-                if (LoginConstants.sessionMap.size()+1>sysPolicy.getBfhhs()){
-                    ResponseInfo.doResponse(response, "系统会话数已满,不能登录!", 401);
-                    return;
-                }
-                // 用户名密码登录提交,判断账号有效期
-                try {
-                    UserDetails userDetails = userServiceImpl.loadUserByUsername(request.getParameter("username"));
-                    SysUser user = (SysUser) userDetails;
-                    if (user.getStatus().equals("2")){
-                        ResponseInfo.doResponse(response, "账号已注销,不能登录!", 406);
+                    // 判断并发会话数是否满足
+                    SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
+                    if (LoginConstants.sessionMap.size() + 1 > sysPolicy.getBfhhs()) {
+                        ResponseInfo.doResponse(response, "系统会话数已满,不能登录!", 401);
                         return;
                     }
-                    if (user.getExpDate() != null) {
-                        // 判断账号截止日期
-                        Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
-                        if (new Date().after(lastDate)) {
-                            if ("0".equals(user.getStatus())){
-                                // 将正常状态变为锁定
+                    // 用户名密码登录提交,判断账号有效期
+                    try {
+                        UserDetails userDetails = userServiceImpl.loadUserByUsername(request.getParameter("username"));
+                        SysUser user = (SysUser) userDetails;
+                        if (user.getStatus().equals("2")) {
+                            ResponseInfo.doResponse(response, "账号已注销,不能登录!", 406);
+                            return;
+                        }
+                        if (user.getExpDate() != null) {
+                            // 判断账号截止日期
+                            Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
+                            if (new Date().after(lastDate)) {
+                                if ("0".equals(user.getStatus())) {
+                                    // 将正常状态变为锁定
 //                                user.setLockTime(System.currentTimeMillis());
-                                user.setStatus("1");
-                                Boolean bo = sysUserService.updateUser(user);
-                                if (!bo){
-                                    log.info(user.getUsername()+"账号已过有效期被锁定失败");
-                                }
-                                else{
-                                    log.info(user.getUsername()+"账号已过有效期被锁定成功");
+                                    user.setStatus("1");
+                                    Boolean bo = sysUserService.updateUser(user);
+                                    if (!bo) {
+                                        log.info(user.getUsername() + "账号已过有效期被锁定失败");
+                                    } else {
+                                        log.info(user.getUsername() + "账号已过有效期被锁定成功");
+                                    }
                                 }
+                                ResponseInfo.doResponse(response, "账号已过有效期被锁定,请联系管理员!", 406);
+                                return;
                             }
-                            ResponseInfo.doResponse(response, "账号已过有效期被锁定,请联系管理员!", 406);
+                        }
+
+                        if ("1".equals(user.getStatus()) && user.getLockTime() == 0) {
+                            ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 406);
                             return;
                         }
-                    }
 
-                    if ("1".equals(user.getStatus()) && user.getLockTime()==0){
-                        ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 406);
+                    } catch (Exception e) {
+                        ResponseInfo.doResponse(response, "用户名或密码错误!", 406);
                         return;
                     }
-
-                } catch (Exception e) {
-                    ResponseInfo.doResponse(response, "用户名或密码错误!", 406);
-                    return;
                 }
             }
         }

+ 1 - 1
backend/src/main/java/com/jiayue/ssi/filter/VerifySmFilter.java

@@ -38,7 +38,7 @@ public class VerifySmFilter extends OncePerRequestFilter {
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
         try {
-            if (request.getRequestURI().equals("/getVerifyCode") || request.getRequestURI().equals("/getMailCode") || request.getRequestURI().equals(defaultFilterProcessUrl)){
+            if (request.getRequestURI().equals(defaultFilterProcessUrl)){
                 String currentIp = IPUtils.getIpAddr();
                 String ip = CacheConstants.IP_USER_MAP.get(currentIp);
                 if (ip!=null && !"".equals(ip)){

+ 2 - 0
backend/src/main/java/com/jiayue/ssi/job/AutoScanHeartUser.java

@@ -11,6 +11,7 @@ import com.jiayue.ssi.service.SysUserService;
 import com.jiayue.ssi.util.*;
 import eu.bitwalker.useragentutils.UserAgent;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -47,6 +48,7 @@ public class AutoScanHeartUser {
             SysUser sysUser = (SysUser)activeUserDto.getAuthentication().getPrincipal();
 
             if (LocalCache.get(CacheConstants.HEART_KEY+username)==null){
+                System.out.println("清理离线:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
                 // 设置用户离线状态
                 sysUser.setOnlineStatus("1");
                 sysUserService.updateUser(sysUser);

+ 1 - 1
ui/src/layout/components/AppMain.vue

@@ -31,7 +31,7 @@ export default {
     }
   },
   created() {
-    this.intervalId = setInterval(this.myFunction, 1000); // 设置初始定时器
+    this.intervalId = setInterval(this.myFunction, 2000); // 设置初始定时器
   },
   destroyed() {
     clearInterval(this.intervalId)

+ 9 - 3
ui/src/views/sysManager/sysPolicy/index.vue

@@ -150,8 +150,8 @@ export default {
         excLevelSameUser: '0',
         unauthorizedAccessExceptionLevel: '0',
         ipAddressExceptionLevel: '0',
-        passwordRule: '',
-        auditableEvent: ''
+        passwordRule: [],
+        auditableEvent: []
       },
       // 表单校验
       rules: {
@@ -214,7 +214,13 @@ export default {
       await this.$axios.get('/sysPolicyController/getAll', {params: searchParams}).then((res) => {
         this.form = res.data
         this.form.passwordRule = res.data.passwordRule.split(',')
-        this.form.auditableEvent = res.data.auditableEvent.split(',')
+
+        if (res.data.auditableEvent==null){
+          this.form.auditableEvent = []
+        }
+        else{
+          this.form.auditableEvent = res.data.auditableEvent.split(',')
+        }
       }).catch((error) => {
         // this.$message.error(error)
       })