若依前后端打成一個(gè)JAR包部署的完整步驟
客戶(hù)需要將項(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文件
說(shuō)明:VUE_APP_BASE_API = '/prod-api'是原來(lái),我這前后端加了訪(fǎng)問(wèn)路徑如VUE_APP_BASE_API = '/ReportApi' #VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/ReportApi'
3、修改vue.config.js

二、后端修改
1、ruoyi-admin pom文件加入以下依賴(lài)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>2、增加配置文件 (dev和local可以都改),增加thymeleaf配置和訪(fǎng)問(wèn)路徑配置

#前后端打成一個(gè)JAR包配置
thymeleaf:
prefix: classpath:/dist/
mode: HTML
encoding: utf-8
cache: false3、修改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() + "/");
/** 頁(yè)面靜態(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ù)情況配置訪(fǎng)問(wèn)權(quán)限修改ruoyi-framework項(xiàng)目中的SecurityConfig.java類(lèi),配置靜態(tài)資源訪(fǎng)問(wèn)權(quán)限
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception
{
// 注解標(biāo)記允許匿名訪(fǎng)問(wèn)的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)證失敗處理類(lèi)
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
// 基于token,所以不需要session
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
// 過(guò)濾請(qǐng)求
.authorizeRequests()
// 對(duì)于登錄login 注冊(cè)register 驗(yàn)證碼captchaImage 允許匿名訪(fǎng)問(wèn)
.antMatchers("/login", "/register", "/captchaImage").permitAll()
// 靜態(tài)資源,可匿名訪(fǎng)問(wèn)
.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()
// 除上面外的所有請(qǐng)求全部需要鑒權(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移動(dòng)到resources目錄下

總結(jié)
到此這篇關(guān)于若依前后端打成一個(gè)JAR包部署的文章就介紹到這了,更多相關(guān)若依前后端打JAR包部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot配置mysql數(shù)據(jù)庫(kù)spring.datasource.url報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot配置mysql數(shù)據(jù)庫(kù)spring.datasource.url報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Java構(gòu)建樹(shù)形菜單的實(shí)例代碼(支持多級(jí)菜單)
這篇文章主要介紹了Java構(gòu)建樹(shù)形菜單的實(shí)例代碼(支持多級(jí)菜單),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09
如何解決springboot數(shù)據(jù)庫(kù)查詢(xún)時(shí)出現(xiàn)的時(shí)區(qū)差異問(wèn)題
這篇文章主要介紹了如何解決springboot數(shù)據(jù)庫(kù)查詢(xún)時(shí)出現(xiàn)的時(shí)區(qū)差異問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Spark學(xué)習(xí)筆記Spark Streaming的使用
這篇文章主要介紹了Spark學(xué)習(xí)筆記Spark Streaming的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Java實(shí)體類(lèi)實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析
這篇文章主要介紹了Java實(shí)體類(lèi)實(shí)現(xiàn)鏈?zhǔn)讲僮鲗?shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Springboot shiro認(rèn)證授權(quán)實(shí)現(xiàn)原理及實(shí)例
這篇文章主要介紹了Springboot shiro認(rèn)證授權(quán)實(shí)現(xiàn)原理及實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

