2022IDEA配置啟動lilishop的swagger展示

北極的大企鵝發表於2022-03-24

一、概述

編寫目的

這個專案基本把電商的業務和平臺都完整的展示出來了,很多專案只是展示一個後臺管理,但是,那並不是完整的企業級專案,而這個lilishop卻是一個完整的專案,並且進行了開原始碼,在這裡要對其做出的貢獻表示感謝.
由於本系統的文件不夠完善,缺少簡單的部署流程,使得很多新人,或沒有接觸這個系統的人,很難簡單快捷的實現,快速部署這個系統,同時,能夠快速搭建,學習起來的狀況,這也是目前國內開源的一大弊病,明明做的專案不差,但是由於文件缺乏,配置繁瑣,導致很難快速上手,快速開發,快速學習,快速使用,所以,特此撰寫此文章,此文章為原創設計,拒絕抄襲,如有轉載,請註明出處.

伺服器部署

由於筆者是一個開發人員,所以部署主要以開發的部署到本地的情況為主,文章這是範例,實際的問題,還需要自身學習百度功能,和自身對於一門技術的理解,希望大家努力學習,爭取自己領悟部署的方法,本文部署主要選取常用的windows系統作為主要的部署環境,希望大家提高自身的部署能力.

二、基本構建

構建工具(參考文獻,其他版本安裝流程基本一樣)

軟體名稱 版本 描述
IntelliJ IDEA 儘量使用比較新的版本 https://www.jetbrains.com/idea/
JDK 1.8 https://www.cnblogs.com/liuyangfirst/p/14334385.html
Maven 3.6.0 https://www.cnblogs.com/liuyangfirst/p/15981202.html
MySQL 官網使用5.7版本,本文采用最新的8.0版 https://www.cnblogs.com/liuyangfirst/p/15997667.html
DBeaver 7.3.0 https://www.cnblogs.com/liuyangfirst/p/15997753.html
Redis 5.0.10 https://www.cnblogs.com/liuyangfirst/p/15998117.html
RedisDesktopManager 0.9.3.817 https://www.cnblogs.com/liuyangfirst/p/15998132.html
Mongodb 4.2.5 https://www.cnblogs.com/liuyangfirst/p/16011402.html
Robo3T 1.4.2 https://www.cnblogs.com/liuyangfirst/p/16014144.html
Elasticsearch 7.6.2 https://www.cnblogs.com/liuyangfirst/p/16004977.html
Kibana 7.6.2 https://www.cnblogs.com/liuyangfirst/p/16006164.html
Logstash 7.6.2 https://www.cnblogs.com/liuyangfirst/p/16008094.html
Git 13.5.0 https://www.cnblogs.com/liuyangfirst/p/15996063.html
NodeJS 16.0.0 https://www.cnblogs.com/liuyangfirst/p/15998172.html
RockeMQ 16.0.0 暫無

三、Git 匯入編譯器

四、模組描述淺析

  • 檔案路徑: lilishop/pom.ml
序號 模組名稱 描述
1 admin 監控模組,用於監控整個系統的服務狀況
2 buyer-api 買家介面模組(就是你在商城想購物,你就是這個買家)
3 common-api 公共程式碼模組,list轉set什麼的一般放這裡,自己不要瞎寫方法,公共的都放這裡
4 config 公共配置文件的模組.用於全域性配置檔案的修改,一般全域性修改改這裡
5 consumer 消費者模組,消費服務,定時任務延時任務
6 DB 資料指令碼存放位置,本地部署前要跑一下資料庫的指令碼
7 framework 核心程式碼(重點可以被學習的地方)
8 lilishop-ui 前段介面程式碼模組(三方的前臺程式碼都在這裡)
9 manager-api 運營管理模組,就是運營小姐姐給你處理訂單異常,售後,退款,這類問題的平臺
10 seller-api 商家模組(店鋪),你買的所有東西都是商家提供的,你看看淘寶每個商品點選可以看到商鋪,這裡就是商鋪模組,供應商提供貨源,平臺提供銷路
11 xxl-job 定時任務管理模組,跑一些定時或自動的業務

五、配置文件

序號 名稱 位置 檔名稱
1 admin src/main/resources application.yml
2 buyer-api src/main/resources application.yml
3 common-api src/main/resources application.yml
4 config src/main/resources application.yml
5 consumer src/main/resources application.yml
6 manager-api src/main/resources application.yml
7 seller-api src/main/resources application.yml
  • 本文暫時以商城主頁的專案為主教程,其他的模組一樣,待自行舉一反三.

1.註釋配置檔案

序號 名稱 位置 檔名稱
1 buyer-api src/main/resources application.yml
2 common-api src/main/resources application.yml
3 config src/main/resources application.yml
  • 註釋以上三個模組的如下程式碼,這裡的程式碼含義就是忽略這些介面的訪問,不註釋的話,以下介面無法訪問.啟動包含swagger的訪問.

# 忽略鑑權url
#ignored:
#  urls:
#    - /editor-app/**
#    - /actuator**
#    - /actuator/**
#    - /MP_verify_qSyvBPhDsPdxvOhC.txt
#    - /weixin/**
#    - /source/**
#    - /buyer/mini-program/**
#    - /buyer/cashier/**
#    - /buyer/pageData/**
#    - /buyer/article/**
#    - /buyer/goods/**
#    - /buyer/category/**
#    - /buyer/shop/**
#    - /buyer/connect/**
#    - /buyer/members/smsLogin
#    - /buyer/members/refresh/*
#    - /buyer/members/refresh**
#    - /buyer/promotion/pintuan
#    - /buyer/promotion/seckill
#    - /buyer/memberEvaluation/**/goodsEvaluation
#    - /buyer/memberEvaluation/**/evaluationNumber
#    - /store/login/**
#    - /manager/user/login
#    - /manager/user/refresh/**
#    - /druid/**
#    - /swagger-ui.html
#    - /doc.html
#    - /swagger-resources/**
#    - /swagger/**
#    - /webjars/**
#    - /v2/api-docs
#    - /configuration/ui
#    - /boot-admin
#    - /**/*.js
#    - /**/*.css
#    - /**/*.png
#    - /**/*.ico


2.新增配置

  • 由於本專案採用的是比較新的技術,叫做knife4j,所以配置要偏向於knife4j和swagger的配置,引入包位置
序號 名稱 位置 檔名稱
1 framework framework/ pom.yml

  • 版本修改位置
序號 名稱 位置 檔名稱
1 lilishop lilishop/ pom.yml

  • 在需要修改的模組,新增程式碼
序號 名稱 位置 檔名稱
1 buyer-api src/main/resources application.yml
2 common-api src/main/resources application.yml
3 config src/main/resources application.yml


spring:
    mvc:
      view:
        prefix: /
        suffix: .html
      freemarker:
        check-template-location: false
      thymeleaf:
        check-template-location: false

3.暫時關閉許可權

  • 由於除了忽略以外,本專案還開起了security的許可權,如果不關閉這個許可權,那麼還是無法訪問專案的swagger.
序號 名稱 位置 檔名稱
1 buyer-api src/main/java/security BuyerAuthenticationFilter
BuyerSecurityConfig
  • 由於專案比較複雜,為了達到簡單高效的目的,第一步註釋程式碼BuyerAuthenticationFilter,(不註釋就算解開了許可權,最後,還需要賬戶密碼登陸,暫時沒找到這個的登陸賬號密碼)

  • 修改程式碼BuyerSecurityConfig,使其跟common-api下的許可權一致.



package cn.lili.security;

import cn.lili.cache.Cache;
import cn.lili.common.security.CustomAccessDeniedHandler;
import cn.lili.common.utils.SpringContextUtil;
import cn.lili.common.properties.IgnoredUrlsProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.web.cors.CorsConfigurationSource;

/**
 * spring Security 核心配置類 Buyer安全配置中心
 *
 * @author Chopper
 * @version v4.0
 * @since 2020/11/14 16:20
 */

@Slf4j
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class BuyerSecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * 忽略驗權配置
     */
    @Autowired
    private IgnoredUrlsProperties ignoredUrlsProperties;

    /**
     * spring security -》 許可權不足處理
     */
    @Autowired
    private CustomAccessDeniedHandler accessDeniedHandler;

    @Autowired
    private Cache<String> cache;

    @Autowired
    private CorsConfigurationSource corsConfigurationSource;

    @Override
    protected void configure(HttpSecurity http) throws Exception {




  // 註釋這裡的過濾許可權程式碼

//        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http
//                .authorizeRequests();
//        //配置的url 不需要授權
//        for (String url : ignoredUrlsProperties.getUrls()) {
//            registry.antMatchers(url).permitAll();
//        }
//        registry
//                .and()
//                //禁止網頁iframe
//                .headers().frameOptions().disable()
//                .and()
//                .logout()
//                .permitAll()
//                .and()
//                .authorizeRequests()
//                //任何請求
//                .anyRequest()
//                //需要身份認證
//                .authenticated()
//                .and()
//                //允許跨域
//                .cors().configurationSource((CorsConfigurationSource) SpringContextUtil.getBean("corsConfigurationSource")).and()
//                //關閉跨站請求防護
//                .csrf().disable()
//                //前後端分離採用JWT 不需要session
//                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
//                .and()
//                //自定義許可權拒絕處理類
//                .exceptionHandling().accessDeniedHandler(accessDeniedHandler)
//                .and()
//                //新增JWT認證過濾器
//                .addFilter(new BuyerAuthenticationFilter(authenticationManager(), cache));


        // 貼上這裡的不需要許可權訪問程式碼
        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http
                .authorizeRequests();
        registry
                .and()
                //禁止網頁iframe
                .headers().frameOptions().disable()
                .and()
                .authorizeRequests()
                //任何請求
                .anyRequest()
                //需要身份認證
                .permitAll()
                .and()
                //允許跨域
                .cors().configurationSource(corsConfigurationSource).and()
                //關閉跨站請求防護
                .csrf().disable();




    }


}


4.瀏覽器測試訪問

  • http://localhost:8888/doc.html,這是knife4j特有的訪問方式,這裡沒有配置文件和介面文件,所以,你也無法用這個進行測試,需要進行測試就要自己新增註釋,詳細的knife4j問題請看相關推薦.

5.其他需要修改模組

  • 步驟與上述一樣,本博主相信你可以自行修改成功,加油,看好你!
序號 名稱 位置 檔名稱
1 admin src/main/resources application.yml
2 consumer src/main/resources application.yml
3 manager-api src/main/resources application.yml
4 seller-api src/main/resources application.yml

六、參考文獻

knife4j只用此外掛的最簡潔開發方式

Knife4j新增lombok及註解初探

Knife4j 註解詳談

結語

嘔心瀝血,爆肝一個星期(需要寫配置環境的文件,還要反覆測試,以便為各位看官老爺提供最好的精品文章),希望點贊,收藏,評論,轉發,您的支援就是本博主前進的動力,後期將推出完整部署文件,未完待續 .....

相關文章