若依前后端打成一個(gè)JAR包部署的完整步驟
客戶需要將項(xiàng)目前后端作為一個(gè)整體打包成jar,不使用nginx方式轉(zhuǎn)發(fā)。使用框架是若依前后端分離,后端springboot,前端vue,目的就是把vue打入jar。
一、前端修改
- ruoyi-ui/src/router/index.js文件 ,將 mode: ‘history’ 改成 mode: ‘hash’
export default new Router({ mode: 'hash', scrollBehavior: () => ({ y: 0 }), routes: constantRoutes })
2、修改ruoyi-ui/.env.production文件
說明:VUE_APP_BASE_API = '/prod-api'是原來,我這前后端加了訪問路徑如VUE_APP_BASE_API = '/ReportApi' #VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/ReportApi'
3、修改vue.config.js
二、后端修改
1、ruoyi-admin pom文件加入以下依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2、增加配置文件 (dev和local可以都改),增加thymeleaf配置和訪問路徑配置
#前后端打成一個(gè)JAR包配置 thymeleaf: prefix: classpath:/dist/ mode: HTML encoding: utf-8 cache: false
3、修改ResourcesConfig文件內(nèi)容,新增以下部分addViewControllers
@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/index").setViewName("index.html"); registry.addViewController("/").setViewName("index.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); }
4、修改ResourcesConfig文件內(nèi)容,替換addResourceHandlers內(nèi)容如下:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** 本地文件上傳路徑 */ registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/"); /** 頁面靜態(tài)化 */ registry.addResourceHandler("/static/**").addResourceLocations("classpath:/dist/static/"); /** swagger配置 */ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); }
5、根據(jù)情況配置訪問權(quán)限修改ruoyi-framework項(xiàng)目中的SecurityConfig.java類,配置靜態(tài)資源訪問權(quán)限
@Override protected void configure(HttpSecurity httpSecurity) throws Exception { // 注解標(biāo)記允許匿名訪問的url ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests(); permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll()); httpSecurity // CSRF禁用,因?yàn)椴皇褂胹ession .csrf().disable() // 禁用HTTP響應(yīng)標(biāo)頭 .headers().cacheControl().disable().and() // 認(rèn)證失敗處理類 .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() // 基于token,所以不需要session .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() // 過濾請求 .authorizeRequests() // 對于登錄login 注冊register 驗(yàn)證碼captchaImage 允許匿名訪問 .antMatchers("/login", "/register", "/captchaImage").permitAll() // 靜態(tài)資源,可匿名訪問 .antMatchers(HttpMethod.GET, "/**/**","/**","/index","/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/test/**","/aicccms/**","/ICD/**").permitAll() // 除上面外的所有請求全部需要鑒權(quán)認(rèn)證 .anyRequest().authenticated() .and() .headers().frameOptions().disable(); // 添加Logout filter httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); // 添加JWT filter httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); // 添加CORS filter httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class); }
6、將前端dist移動到resources目錄下
總結(jié)
到此這篇關(guān)于若依前后端打成一個(gè)JAR包部署的文章就介紹到這了,更多相關(guān)若依前后端打JAR包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot配置mysql數(shù)據(jù)庫spring.datasource.url報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot配置mysql數(shù)據(jù)庫spring.datasource.url報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01Java構(gòu)建樹形菜單的實(shí)例代碼(支持多級菜單)
這篇文章主要介紹了Java構(gòu)建樹形菜單的實(shí)例代碼(支持多級菜單),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09如何解決springboot數(shù)據(jù)庫查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問題
這篇文章主要介紹了如何解決springboot數(shù)據(jù)庫查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Spark學(xué)習(xí)筆記Spark Streaming的使用
這篇文章主要介紹了Spark學(xué)習(xí)筆記Spark Streaming的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Java實(shí)體類實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析
這篇文章主要介紹了Java實(shí)體類實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Springboot shiro認(rèn)證授權(quán)實(shí)現(xiàn)原理及實(shí)例
這篇文章主要介紹了Springboot shiro認(rèn)證授權(quán)實(shí)現(xiàn)原理及實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06