后台开发代码启动配置

概述

本文主要说明,基于的智平台基础模块代码为http://scm.hollysmart.com/jeecg2.4/jeecg-boot-framework.git 分支为smart_platform06版本的nacos连接属性的配置,服务启动的方式,以及防xss攻击,出现跨越问题的配置项进行说明;

ps: 本文所有涉及环境均以dev为例

nacos连接属性配置

1.找到jeecg-boot-starter-cloud模块,在src/main/resources目录下找到bootstrap-dev.yml文件

位置如图:

image-20220620101733357

找到文件地址,文件内容如图:

image-20220620102056558

spring:
	nacos:
      config:
        # Nacos 认证用户
        username: nacos
        # Nacos 认证密码
        password: nacos
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 配置对应的分组
        group: DEFAULT_GROUP
        # 配置文件后缀
        file-extension: yaml
        prefix: jeecg
        # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
        #shared-configs[0]:
          #data-id: ${prefix.name}-common.yaml # 配置文件名-Data Id
          #group: ${config.group}   # 默认为DEFAULT_GROUP
          #refresh: false   # 是否动态刷新,默认为false
        # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
        namespace: 6fa2b4be-35da-4359-af66-dbe805801608
      discovery:
        server-addr: 127.0.0.1:8848
        watch:
          enabled: false
        namespace: 6fa2b4be-35da-4359-af66-dbe805801608

服务启动

1.服务启动时,指定对应环境

两种方式:

(1)-Dspring.profiles.active=dev

image-20220620110340474

(2)指定active profiles 为dev

image-20220620110528536

注意以上两种方式,在linux环境中,需要使用第一种方式,进行环境的指定

防xss功能

1.在配置文件jeecg-dev.yaml文件中找到jeecg.xss.enabled的配置,将配置项改为true即可

image-20220620111350932

cors错误

1.在nacos的配置中,以dev举例,在jeecg-dev.yaml文件中找到jeecg.cors.allowed配置,增加运行访问的地址,多个以“,“分割,2.在jeecg-cloud-gateway服务中找到对应的配置文件,application-dev.yml中找到spring.cloud.gateway.globalcors.cors-configurations.allowedOrigins属性中增加允许通过的地址,即可

image-20220620111554708

image-20220620111614510

swagger升级到3.x

1.启动jeecg-cloud-openapi服务,该服务在生产环境中不部署,只用于在开发环境

2.启动成功后,访问 http://localhost:10002/webjars/swagger-ui/index.html

访问后可以选择要查看的微服务模块,如jeecg-system

image-20220620112019429

配置自动刷新功能

如果需要配置自动刷新,不需要重启服务的话,建议在jeecg-config模块中的JeecgProperties.java文件中,增加自己想要的配置类。

具体的配置可以参考JeecgProperties类的内容来增加自己的配置。

package org.jeecg.cloud.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * All rights Reserved
 *
 * @author liujh
 * @version V1.0.0
 * @title: JeecgProperties
 * @description:
 * @date: 2022/4/15 10:44
 * @remark: 配置类
 */
@Component
@ConfigurationProperties(prefix = "jeecg")
@RefreshScope
@Data
public class JeecgProperties {
    private String uploadType;
    private Path path;
    private Shiro shiro;
    private Oss oss;
    private Elasticsearch elasticsearch;
    private Desform desform;
    private Minio minio;
    private Jmreport jmreport;
    private Wps wps;
    private Xxljob xxljob;
    private RouteConfig routeConfig;
    private Redisson redisson;
    private String fileViewDomain;
    private Cors cors;
    private Xss xss;
    private Hollysmart hollysmart;
    private Token token;
    private Login login;

    /**
     * 上传文件配置
     */
    @Data
    public static class Path {
        private String upload;
        private String webapp;
    }

    /**
     * shiro 配置
     */
    @Data
    public static class Shiro {
        private String excludeUrls;
    }

    /**
     * oss配置
     */
    @Data
    public static class Oss {
        private String endpoint;
        private String accessKey;
        private String secretKey;
        private String staticDomain;
        private String bucketName;
    }

    /**
     * es配置
     */
    @Data
    public static class Elasticsearch {
        private String clusterName;
        private String clusterNodes;
        private String checkEnable;
    }

    /**
     * desform配置
     */
    @Data
    public static class Desform {
        private String themeColor;
        private String uploadType;
        private String baseUrl;
        private String extranetUrl;
    }

    /**
     * minio
     */
    @Data
    public static class Minio {
        private String minioUrl;
        private String minioName;
        private String minioPass;
        private String bucketName;
    }

    /**
     * jm
     */
    @Data
    public static class Jmreport {
        private String mode;
        private Boolean isVerifyToken;
        private String verifyMethods;
    }

    /**
     * wps
     */
    @Data
    public static class Wps {
        private String domain;
        private String appid;
        private String appsecret;
    }

    /**
     * xxljob
     */
    @Data
    public static class Xxljob {
        private Boolean enabled;
        private String adminAddresses;
        private String appname;
        private String accessToken;
        private String address;
        private String ip;
        private Integer port;
        private String logPath;
        private String logRetentionDays;
    }

    /**
     * route
     */
    @Data
    public static class RouteConfig {
        private String dataId;
        private String group;
        private String dataType;
    }

    /**
     * redisson
     */
    @Data
    public static class Redisson {
        private String address;
        private String password;
        private String type;
        private Boolean enabled;
    }

    /**
     * cros
     */
    @Data
    public static class Cors {
        private List<String> allowed;
    }

    /**
     * xss
     */
    @Data
    public static class Xss {
        private Boolean enabled;
        /**
         * 排除路径
         */
        private List<String> excludeUrls = new ArrayList<>();
    }

    /**
     * hollysmart
     */
    @Data
    public static class Hollysmart {
        private String sysUserRoleTimeOut;
        private String sysUserPermissionTimeOut;
        private String onlineAuthTimeOut;
        private String loginErrTimes;
        private String loginLock;
        private String gateWayCheckToken;
    }

    /**
     * token
     */
    @Data
    public static class Token {
        private String expire;
        private String refExpire;
    }

    /**
     * login
     */
    @Data
    public static class Login {
        private String customLogin;
        private String baseCustomPwd;
    }
}

如果不使用此方式,而是用自己的配置类使用@Value注解,注入自己的配置时,可以在类文件上增加@RefreshScope注解,可以实现配置的实时刷新,而不用重启服务。


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。