RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

内容分享37分钟前发布
0 0 0

1、合并打包缘由

 甲方服务器上无法安装nginx,所以只能打成一个jar包

2、后端要改的代码

1)修改ResourcesConfig

以下红色区域是新增内容:

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

修改后代码:
/**

* 通用配置

*

* @author ruoyi

*/

@Configuration

public class ResourcesConfigimplements WebMvcConfigurer

{

@Autowired

    private RepeatSubmitInterceptorrepeatSubmitInterceptor;

@Override

    public void addResourceHandlers(ResourceHandlerRegistry registry)

{

/** 本地文件上传路径 */

        registry.addResourceHandler(Constants.RESOURCE_PREFIX +”/**”)

.addResourceLocations(“file:” + JournalismConfig.getProfile() +”/”)

.addResourceLocations(new ClassPathResource(“/static/static/index.html”) {

@Override

                    public ResourcecreateRelative(String relativePath) {

return this;

}

});

/** 页面静态化 */

        registry.addResourceHandler(“/static/**”).addResourceLocations(“classpath:/static/static/”);

/** swagger配置 */

        registry.addResourceHandler(“/swagger-ui/**”)

.addResourceLocations(“classpath:/META-INF/resources/webjars/springfox-swagger-ui/”)

.setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());

registry.addResourceHandler(“doc.html”).addResourceLocations(“classpath:/META-INF/resources/”);

registry.addResourceHandler(“/webjars/**”).addResourceLocations(“classpath:/META-INF/resources/webjars/”);

}

@Override

    public void addViewControllers(ViewControllerRegistry registry) {

registry.addViewController(“/index”).setViewName(“index.html”);

registry.addViewController(“/”).setViewName(“index.html”);

registry.setOrder(Ordered.HIGHEST_PRECEDENCE);

}

/**

    * 自定义拦截规则

    */

    @Override

    public void addInterceptors(InterceptorRegistry registry)

{

registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns(“/**”);

}

/**

    * 跨域配置

    */

    @Bean

    public CorsFiltercorsFilter()

{

CorsConfiguration config =new CorsConfiguration();

config.setAllowCredentials(true);

// 设置访问源地址

        config.addAllowedOriginPattern(“*”);

// 设置访问源请求头

        config.addAllowedHeader(“*”);

// 设置访问源请求方法

        config.addAllowedMethod(“*”);

// 有效期 1800秒

        config.setMaxAge(1800L);

// 添加映射路径,拦截一切请求

        UrlBasedCorsConfigurationSource source =new UrlBasedCorsConfigurationSource();

source.registerCorsConfiguration(“/**”, config);

// 返回新的CorsFilter

        return new CorsFilter(source);

}

}

2)修改SecurityConfig  配置

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

修改后代码:

/**

* spring security配置

*

* @author ruoyi

*/

@EnableMethodSecurity(prePostEnabled =true, securedEnabled =true)

@Configuration

public class SecurityConfig

{

/**

    * 自定义用户认证逻辑

    */

    @Autowired

    private UserDetailsServiceuserDetailsService;

/**

    * 认证失败处理类

    */

    @Autowired

    private AuthenticationEntryPointImplunauthorizedHandler;

/**

    * 退出处理类

    */

    @Autowired

    private LogoutSuccessHandlerImpllogoutSuccessHandler;

/**

    * token认证过滤器

    */

    @Autowired

    private JwtAuthenticationTokenFilterauthenticationTokenFilter;

/**

    * 跨域过滤器

    */

    @Autowired

    private CorsFiltercorsFilter;

/**

    * 允许匿名访问的地址

    */

    @Autowired

    private PermitAllUrlPropertiespermitAllUrl;

/**

    * 身份验证实现

    */

    @Bean

    public AuthenticationManagerauthenticationManager()

{

DaoAuthenticationProvider daoAuthenticationProvider =new DaoAuthenticationProvider();

daoAuthenticationProvider.setUserDetailsService(userDetailsService);

daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());

return new ProviderManager(daoAuthenticationProvider);

}

/**

    * anyRequest          |  匹配所有请求路径

    * access              |  SpringEl表达式结果为true时可以访问

    * anonymous          |  匿名可以访问

    * denyAll            |  用户不能访问

    * fullyAuthenticated  |  用户完全认证可以访问(非remember-me下自动登录)

    * hasAnyAuthority    |  如果有参数,参数表明权限,则其中任何一个权限可以访问

    * hasAnyRole          |  如果有参数,参数表明角色,则其中任何一个角色可以访问

    * hasAuthority        |  如果有参数,参数表明权限,则其权限可以访问

    * hasIpAddress        |  如果有参数,参数表明IP地址,如果用户IP和参数匹配,则可以访问

    * hasRole            |  如果有参数,参数表明角色,则其角色可以访问

    * permitAll          |  用户可以任意访问

    * rememberMe          |  允许通过remember-me登录的用户访问

    * authenticated      |  用户登录后可访问

    */

    @Bean

    protected SecurityFilterChainfilterChain(HttpSecurity httpSecurity)throws Exception

{

return httpSecurity

// CSRF禁用,由于不使用session

            .csrf(csrf -> csrf.disable())

// 禁用HTTP响应标头

            .headers((headersCustomizer) -> {

headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());

})

// 认证失败处理类

            .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))

// 基于token,所以不需要session

            .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))

// 注解标记允许匿名访问的url

            .authorizeHttpRequests((requests) -> {

permitAllUrl.getUrls().forEach(url ->requests.antMatchers(url).permitAll());

// 对于登录login 注册register 验证码captchaImage 允许匿名访问

                requests.antMatchers(“/login”,”/register”,”/captchaImage”,”/api/**”,”/common/**”).permitAll()

// 静态资源,可匿名访问

                    .antMatchers(HttpMethod.GET,”/”,”/*.html”,”/**/*.html”,”/**/*.css”,”/**/*.js”,”/static/**”,

“/”,

“/index”,”/profile/**”).permitAll()

.antMatchers(“/swagger-ui.html”,”/swagger-resources/**”,”/webjars/**”,”/*/api-docs”,”/druid/**”).permitAll()

// 除上面外的所有请求全部需要鉴权认证

                    .anyRequest().authenticated();

})

// 添加Logout filter

            .logout(logout -> logout.logoutUrl(“/logout”).logoutSuccessHandler(logoutSuccessHandler))

// 添加JWT filter

            .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)

// 添加CORS filter

            .addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class)

.addFilterBefore(corsFilter, LogoutFilter.class)

.build();

}

/**

    * 强散列哈希加密实现

    */

    @Bean

    public BCryptPasswordEncoderbCryptPasswordEncoder()

{

return new BCryptPasswordEncoder();

}

}

3)修改admin模块下的pom文件

把以下配置添加到admin模块下的pom的<build>中

<resources>

            <resource>

                <directory>src/main/resources</directory>

                <filtering>true</filtering>

                <excludes>

                    <exclude>static/**</exclude>

                </excludes>

            </resource>

            <resource>

                <directory>src/main/resources</directory>

                <filtering>false</filtering>

                <includes>

                    <include>static/**</include>

                </includes>

            </resource>

        </resources>

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

2、修改前端代码

我把前端项目ui放到项目里面了

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

1)修改前端vue.config.js

修改打包后的输出位置

outputDir: ../ruoyi-admin/src/main/resources/static

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

2)、修改router/index.js

改为:mode: hash ,

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端


3)修改.env.production

VUE_APP_BASE_PATH调用后端ip端口地址

VUE_APP_BASE_API =   设置为空字符串

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

需要修改的代码位置就修改完了。

可以在本地测试运行一下,先打前端包,

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

打包后查看admin模块下resources是否有前端文件

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

然后就可以启动后端项目啦。页面访问也是访问后端的ip地址+端口;

我的后端端口是8081

访问:http://localhost:8081/ 

RuoYi vue 前后端分离版本合并打成一个jar包,不通过nginx访问前端

© 版权声明

相关文章

暂无评论

none
暂无评论...