美文网首页
设置虚拟路径下载服务器模板问题

设置虚拟路径下载服务器模板问题

作者: 墨色尘埃 | 来源:发表于2018-03-30 23:17 被阅读77次
    image.png
    微信图片_20180329183815.png

    nginx代理,加了权限之后
    点击下载模板功能,跳转到http://10.10.200.187/templates/企业信息管理.xls,10.10.200.187是nginx的代理,访问的是10.10.200.18的服务器,18服务器上的后台配置文件里定义的模板地址是:resourceLocations: file:/D:/FTP_FILES/QYY/templates/,而18服务器上的D:/FTP_FILES/QYY/templates/这个路径下并没有模板所以会导致访问的请求404,解决的方法①就是在18服务器的这个目录下放置模板就可以了。②另一个解决办法是:修改配置文件中的模板路径地址,改为指向真实存放模板的路径,这里是放在200.6服务器上,试试改为如下

    resourceLocations: file:/ftp://10.10.200.6/D:/FTP_FILES/QYY/templates/
    resourceLocations: ftp://10.10.200.6/D:/FTP_FILES/QYY/templates/
    

    而之前用本机能测试成功是因为,点击下载模板按钮会跳转到http://172.16.11.66:10002/templates/企业信息管理.xls,正因为66服务器的D:/FTP_FILES/QYY/templates/路径下有模板所以可以下载成功

    image.png

    注:在文件夹中也可以访问ftp,比如输入ftp://172.16.11.66/,输入ftp用户名和密码即刻呈现如下

    image.png

    未使用代理,加了权限之后
    加了权限之后,所有的请求或者url路径就要在同一个域名下访问
    比如企业云:在localhost:8000下下载模板功能,如果点击之后跳转到http://172.16.11.66:10002/templates/企业信息管理.xls会报401错误,这是因为在不同的域名下(localhost和172.16.11.66)权限不通。所以想要下载到模板,跳转路径应该改为http://localhost:8000/templates/企业信息管理.xls,并在本地电脑的D:/FTP_FILES/QYY/templates/目录下建立对应的文件夹

    templatePath: #抄表预警模板地址
      rootPath: excelTemplate/chaobiaoyujing.xlsx
      copyRootPath: D:/chaobiaoyujing1.xlsx
      resourceHeader: /templates/**
      resourceLocations: file:/D:/FTP_FILES/QYY/templates/
    
    image.png

    同理,如果是在http://127.0.0.1:8000/#/EnterpriseCloud/BasicDataManage下的下载模板功能,①先登陆后有权限,再跳转http://127.0.0.1:8000/templates/企业信息管理.xls才能下载(是否需要登录系统需看SecurityConfig类中是否设置了权限),②如果未登录点击http://127.0.0.1:8000/templates/企业信息管理.xls路径会提示401没有权限错误。③如果跳转到http://localhost:8000/templates/企业信息管理.xls则会报401错误,错误如下

    Whitelabel Error Page
    
    This application has no explicit mapping for /error, so you are seeing this as a fallback.
    
    Mon Apr 02 16:39:19 CST 2018
    There was an unexpected error (type=Unauthorized, status=401).
    Full authentication is required to access this resource
    

    这里的http://127.0.0.1:8000/templates/企业信息管理.xls并不是一个接口,而是通过MyConfiguration设置成的一个url地址,参考文章springboot访问静态资源springboot访问本地路径获取图片url和通过接口获取图片并缓存springboot静态资源文件映射
    SecurityConfig权限设置

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry
                    expressionInterceptUrlRegistry = http.exceptionHandling().authenticationEntryPoint
                    (securityException401EntryPoint())
                    .and()
                    .csrf()
                    .disable()
                    .headers()
                    .frameOptions()
                    .sameOrigin()
                    .and()
                    .logout().addLogoutHandler(new SecurityContextLogoutHandler())
                    .and()
                    .authorizeRequests()
                    .antMatchers("/security/loginByPwd").permitAll()
                    .antMatchers("/security/loginByToken").permitAll()
                    .antMatchers("/security/vcode").permitAll()
                    .antMatchers("/v1/userInfo/login").permitAll()
                    .antMatchers("/v1/password/revise").permitAll()
                    .antMatchers("/v1/password/user").permitAll()
                    .antMatchers("/v1/dataList").permitAll()
    //                .antMatchers("/templates/*.xls").permitAll() //允许所有权限
    //                .antMatchers("/templates/*.xlsx").permitAll() //允许所有权限
                    .antMatchers("/*.jpg").permitAll()
                    .antMatchers(HttpMethod.POST, "/v1/repair").permitAll()
                    .antMatchers(HttpMethod.POST, "/v1/complain").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/menus").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/articleInfo").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/shopInfo").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/rentPublic").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/rent/detail").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/goodsInfo").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/goodsIntroInfo").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/articleContentInfo").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/attachment/image").permitAll()
                    .antMatchers(HttpMethod.GET, "/v1/evaluationInfo").permitAll();
    
            //正式环境下所有的请求都要经过验证
            if (envActive.equals("prod")) {
                expressionInterceptUrlRegistry.accessDecisionManager(accessDecisionManager()).anyRequest().authenticated();
            } else {
                expressionInterceptUrlRegistry.anyRequest().permitAll();
            }
    //                .permitAll()  //权限允许所有人
    
    //                .and()
    //                .sessionManagement()
    //                .invalidSessionUrl("/login")
    //                .maximumSessions(5)
    
    
        }
    

    MyConfiguration

    @Configuration
    public class MyConfiguration extends WebMvcConfigurerAdapter {
    
        @Autowired
        TemplateConfig templateConfig;
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            /**
             * @Description: 对文件的路径进行配置, 创建一个虚拟路径/rules/** ,即只要在<img src="/rules/picName.jpg" />便可以直接引用图片
             *这是图片的物理路径  "file:/+本地图片的地址"
             */
    //        registry.addResourceHandler("/rules/**").addResourceLocations
    //                ("classpath:/rules/");
            registry.addResourceHandler(templateConfig.getResourceHeader()).addResourceLocations
                    (templateConfig.getResourceLocations());
    
    //        registry.addResourceHandler("/templates/**").addResourceLocations
    //                ("file:\\E:\\IdeaProjects\\gaygserver\\src\\main\\resources\\static\\");
    //        registry.addResourceHandler("/templates/**").addResourceLocations
    //                ("classpath:/static/");
    
    //        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
    //        registry.addResourceHandler("/**").addResourceLocations("file:\\E:\\IdeaProjects\\gaygserver\\src" +
    //                "\\main\\resources\\static\\");
            super.addResourceHandlers(registry);
        }
    
    //    @Override
    //    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //        //和页面有关的静态目录都放在项目的static目录下
    //        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    //        //上传的图片在D盘下的OTA目录下,访问路径如:http://localhost:8081/OTA/d3cf0281-bb7f-40e0-ab77-406db95ccf2c.jpg
    //        //其中OTA表示访问的前缀。"file:D:/OTA/"是文件真实的存储路径
    //        registry.addResourceHandler("/OTA/**").addResourceLocations("file:D:/OTA/");
    //    }
    }
    

    相关文章

      网友评论

          本文标题:设置虚拟路径下载服务器模板问题

          本文链接:https://www.haomeiwen.com/subject/lqywcftx.html