Spring mvc backkground图像仅在Spring Server中执行loggin后显示

Spring mvc backkground图像仅在Spring Server中执行loggin后显示,spring-mvc,login,spring-security,background-image,Spring Mvc,Login,Spring Security,Background Image,我正在开发一个Spring服务器,它允许使用登录页面进行访问 此登录页面的背景图像不是第一次显示的。如果我输入一个有效的用户和密码,然后返回登录页面,现在会显示背景图像 所以,我认为这可能是一些安全问题 这是登录页面代码: <!DOCTYPE html> <html> <head> <title>Login PalmasLab</title> <link rel="stylesheet" h

我正在开发一个Spring服务器,它允许使用登录页面进行访问

此登录页面的背景图像不是第一次显示的。如果我输入一个有效的用户和密码,然后返回登录页面,现在会显示背景图像

所以,我认为这可能是一些安全问题

这是登录页面代码:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Login PalmasLab</title>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap-theme.min.css">
    <style>
    body
    {
        background: url('/img/login_background3.png');
        background-size: 100%;
        background-repeat: no-repeat;
    }

    </style>
    </head>

    <body onload='document.f.username.focus();'>


    <div class="container theme-showcase"  role="main">
    <div class="jumbotron" id="title_jumbotron">
    <form name='f' action='/' method='POST'>

      <table>
        <tr><td> <h4 >PalmasLab <small >Login</small></h4></td></tr>
        <tr><td> <input class="form-control" type='text'placeholder="Nome de Usuario" name='username' value=''    ></td></tr>
        <tr><td><input class="form-control" type='password' placeholder="Senha" name='password' style="margin-top:2px;" /></td></tr>
        <tr><td><input  class="btn btn-success btn-sm" name="submit" type="submit" value="Entra" style="width:100%; margin-top:5px;"/></td></tr>
      </table>

    </form>
    </div>
    </div>

    </body></html>

登录PalmasLab
身体
{
背景:url('/img/login_background3.png');
背景大小:100%;
背景重复:无重复;
}
PalmasLab登录
这是我的Application.java代码:

@EntityScan(basePackages= "palmaslab.mapas.repository")
@EnableJpaRepositories(basePackages= "palmaslab.mapas.repository"/*.PostoSaudeRepository.class*/)
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages="palmaslab.mapas.controller")
@Import({palmaslab.mapas.security.SecurityConfiguration.class})
//@Import({palmaslab.mapas.security.OAuth2SecurityConfiguration.class})
@EnableWebMvc
@PropertySource("application.properties")
public class Application extends /*WebMvcConfigurerAdapter*/ RepositoryRestMvcConfiguration{



    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
        "classpath:/META-INF/resources/", "classpath:/resources/",
        "classpath:/static/", "classpath:/public/" };


    public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
         }
     @Bean
        public LocalContainerEntityManagerFactoryBean entityManagerFactory(
                DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
            LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
            lef.setDataSource(dataSource);

            lef.setJpaVendorAdapter(jpaVendorAdapter);
            lef.setPackagesToScan("palmaslab.mapas.controller");
            return lef;
        }


        @Bean
        public JpaVendorAdapter jpaVendorAdapter() {
            HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
            hibernateJpaVendorAdapter.setShowSql(false);
            hibernateJpaVendorAdapter.setGenerateDdl(true); //Auto creating scheme when true
            hibernateJpaVendorAdapter.setDatabase(Database.H2);//Database type
            return hibernateJpaVendorAdapter;
        }

        @Bean 

        public SpringTemplateEngine templateEngine() { 
            SpringTemplateEngine engine = new SpringTemplateEngine();
            Set<IDialect> dialects = new HashSet<IDialect>();
            dialects.add(new SpringSecurityDialect());
            dialects.add(new LayoutDialect());
            engine.setAdditionalDialects(dialects);

            LinkedHashSet<ITemplateResolver> templateResolvers = new LinkedHashSet<ITemplateResolver>(2);
            templateResolvers.add(templateResolverServlet());
            templateResolvers.add(layoutTemplateResolverServlet());
            engine.setTemplateResolvers(templateResolvers);
            return engine;
        } 


        @Bean 
        public ServletContextTemplateResolver layoutTemplateResolverServlet() { 
            ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
            templateResolver.setPrefix("/WEB-INF/layout/");
            templateResolver.setSuffix("");
            templateResolver.setTemplateMode("LEGACYHTML5");
            templateResolver.setOrder(1);
            templateResolver.setCacheable(false);
            return templateResolver;
        } 

        @Bean 
        public ServletContextTemplateResolver templateResolverServlet() { 
            ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
            templateResolver.setPrefix("/WEB-INF/view/");
       //     System.out.println("templateResolver.getName()"+templateResolver.getName());
            templateResolver.setSuffix(".html");
            templateResolver.setTemplateMode("LEGACYHTML5");

        //    templateResolver.setTemplateMode("HTML5");
            templateResolver.setOrder(2);
            templateResolver.setCacheable(false);
            return templateResolver;
        } 

        @Bean 
        public ViewResolver MobileResolver() { 
            ThymeleafViewResolver resolver = new ThymeleafViewResolver();
            resolver.setTemplateEngine(templateEngine());
            resolver.setOrder(0);
            String [] exclusions = new String [1];
            exclusions[0] = "mobile*";

            resolver.setViewNames(exclusions);
          //  resolver.setCharacterEncoding("ISO-8859-1");
            resolver.setCharacterEncoding("UTF-8");
            resolver.setContentType("application/json");

            resolver.setCache(false);
            return resolver;
        }     
        @Bean 
        public ViewResolver thymeleafViewResolver() { 
            ThymeleafViewResolver resolver = new ThymeleafViewResolver();
            resolver.setTemplateEngine(templateEngine());
            resolver.setOrder(1);

          //  resolver.setCharacterEncoding("ISO-8859-1");
            resolver.setCharacterEncoding("UTF-8");
            resolver.setCache(false);
            return resolver;
        }     
    /*@Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/view/");
        resolver.setSuffix(".jsp");
        System.out.println("!!!!!!!!! internal resourceView");
        return resolver;
    }*/

      //-------------------------------------__>>>>>>>>>>>>>>>>DESCOMENTAR !!!!!!!!!!!!!!!!!!!!!!!!!----------  

    @Bean
    public ServletRegistrationBean dispatcherRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet());
        registration.addUrlMappings("/");
        registration.setLoadOnStartup(1);

        System.out.println("~~~~~~~ Servlet regristated " + registration.getServletName());
        return registration;

    } 
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Bean
    public DispatcherServlet dispatcherServlet() {
        return new DispatcherServlet();
    }
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setMaxFileSize("9999999KB");
        factory.setMaxRequestSize("9999999KB");
        return factory.createMultipartConfig();
    }
     @Bean
      public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setMaxUploadSize(999999999);
        return resolver;
      }


    @Bean
    public CommonsMultipartResolver filterMultipartResolver() {
        CommonsMultipartResolver resolver=new CommonsMultipartResolver();
     //   resolver.setDefaultEncoding("ISO-8859-1");
        resolver.setDefaultEncoding("UTF-8");
        resolver.setMaxUploadSize(999999999);
        resolver.setMaxInMemorySize(999999999);

        return resolver;
    }
    /*
     @Bean
      public MultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
      }*/
    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        factory.setPort(8080);
        factory.setSessionTimeout(5, TimeUnit.MINUTES);

        //factory.addErrorPages(new ErrorPage(HttpStatus.404, "/notfound.html"));
        return factory;
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (!registry.hasMappingForPattern("/webjars/**")) {
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
        }
        if (!registry.hasMappingForPattern("/locals/**")) {
            registry.addResourceHandler("/locals/**").addResourceLocations(
                     "classpath:/locals");

        }
        if (!registry.hasMappingForPattern("/**")) {
            registry.addResourceHandler("/**").addResourceLocations(
                    CLASSPATH_RESOURCE_LOCATIONS);
        }
    }


}
@EntityScan(basePackages=“palmaslab.mapas.repository”)
@EnableJpaRepositories(basePackages=“palmaslab.mapas.repository”/*.PostoSaudeRepository.class*/)
@配置
@启用自动配置
@ComponentScan(basePackages=“palmaslab.mapas.controller”)
@导入({palmaslab.mapas.security.SecurityConfiguration.class})
//@导入({palmaslab.mapas.security.OAuth2SecurityConfiguration.class})
@EnableWebMvc
@PropertySource(“application.properties”)
公共类应用程序扩展/*WebMVCConfigureAdapter*/RepositoryRestMvcConfiguration{
私有静态最终字符串[]类路径\资源\位置={
“类路径:/META-INF/resources/”,“类路径:/resources/”,
“类路径:/static/”,“类路径:/public/”};
公共静态void main(字符串[]args){
SpringApplication.run(Application.class,args);
}
@豆子
公共LocalContainerEntityManagerFactoryBean entityManagerFactory(
数据源数据源,JpaVendorAdapter(JpaVendorAdapter){
LocalContainerEntityManagerFactoryBean lef=新的LocalContainerEntityManagerFactoryBean();
lef.setDataSource(数据源);
lef.setJpaVendorAdapter(jpaVendorAdapter);
lef.setPackagesToScan(“palmaslab.mapas.controller”);
返回lef;
}
@豆子
公共JpaVendorAdapter JpaVendorAdapter(){
hibernatejbavendorapter hibernatejbavendorapter=新的hibernatejbavendorapter();
hibernatejbavendorapter.setShowSql(false);
HibernateJavaEndorapter.setGenerateDdl(true);//为true时自动创建方案
HibernateJavaEndorapter.setDatabase(Database.H2);//数据库类型
返回HibernateJavaEndorapter;
}
@豆子
公共SpringTemplateEngine templateEngine(){
SpringTemplateEngine=新的SpringTemplateEngine();
Set方言=新HashSet();
add(新的SpringSecurityDialogue());
添加(新布局方言());
引擎设置附加方言(方言);
LinkedHashSet templateResolvers=新LinkedHashSet(2);
add(templateResolverServlet());
add(layoutTemplateResolverlet());
引擎设置模板解算器(模板解算器);
返回引擎;
} 
@豆子
public ServletContextTemplateResolver layoutTemplateResolverServlet(){
ServletContextTemplateResolver templateResolver=新的ServletContextTemplateResolver();
templateResolver.setPrefix(“/WEB-INF/layout/”);
templateResolver.setSuffix(“”);
setTemplateMode(“LEGACYHTML5”);
templateResolver.setOrder(1);
templateResolver.setCacheable(false);
返回templateResolver;
} 
@豆子
public ServletContextTemplateResolver templateResolverServlet(){
ServletContextTemplateResolver templateResolver=新的ServletContextTemplateResolver();
templateResolver.setPrefix(“/WEB-INF/view/”);
//System.out.println(“templateResolver.getName()”+templateResolver.getName());
templateResolver.setSuffix(“.html”);
setTemplateMode(“LEGACYHTML5”);
//setTemplateMode(“HTML5”);
templateResolver.setOrder(2);
templateResolver.setCacheable(false);
返回templateResolver;
} 
@豆子
公共视图解析程序MobileResolver(){
ThymileAfViewResolver解析器=新的ThymileAfViewResolver();
resolver.setTemplateEngine(templateEngine());
解析程序。设置顺序(0);
字符串[]排除项=新字符串[1];
除外条款[0]=“移动*”;
解析程序。setViewNames(除外);
//分解器。setCharacterEncoding(“ISO-8859-1”);
解析器.setCharacterEncoding(“UTF-8”);
setContentType(“应用程序/json”);
resolver.setCache(false);
返回解析器;
}     
@豆子
公共ViewResolver(){
ThymileAfViewResolver解析器=新的ThymileAfViewResolver();
resolver.setTemplateEngine(templateEngine());
解析程序设置顺序(1);
//分解器。setCharacterEncoding(“ISO-8859-1”);
解析器.setCharacterEncoding(“UTF-8”);
resolver.setCache(false);
返回解析器;
}     
/*@豆子
公共内部资源viewResolver viewResolver(){
InternalResourceViewResolver解析器=新的InternalResourceViewResolver();
resolver.setPrefix(“/WEB-INF/view/”);
resolver.setSuffix(“.jsp”);
System.out.println(“!!!!!!!!!!!内部资源视图”);
返回解析器;
}*/
//-------------------------------------__>>>>>>>>>>>>>>>>Descometar!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!------------
@豆子
public ServletRegistrationBean dispatcherRegistration(){
ServletRegistrationBean注册=新的ServletRegistrationBean(dispatc
    @Configuration
    //Setup Spring Security to intercept incoming requests to the Controllers
    @EnableWebSecurity
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {


        private static final AuthenticationSuccessHandler NO_REDIRECT_SUCCESS_HANDLER = new AuthenticationSuccessHandler() {
            public void onAuthenticationSuccess(HttpServletRequest request,
                    HttpServletResponse response, Authentication authentication)
                    throws IOException, ServletException {
                response.setStatus(HttpStatus.SC_OK);

            }
        };
        private static final AuthenticationSuccessHandler CUSTOMIZED_REDIRECT_SUCCESS_HANDLER = new AuthenticationSuccessHandler() {
            public void onAuthenticationSuccess(HttpServletRequest request,
                    HttpServletResponse response, Authentication authentication)
                    throws IOException, ServletException {

                Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
            for (GrantedAuthority grantedAuthority : authorities) {
               if (grantedAuthority.getAuthority().equals("mobile")) {
                   response.setStatus(HttpStatus.SC_OK);

                }
            }

            }
        };

        private static final LogoutSuccessHandler JSON_LOGOUT_SUCCESS_HANDLER = new LogoutSuccessHandler() {
            public void onLogoutSuccess(HttpServletRequest request,
                    HttpServletResponse response, Authentication authentication)
                    throws IOException, ServletException {

                response.setStatus(HttpStatus.SC_OK);
                response.setContentType("application/json");
                response.getWriter().write("{}");
            }
        };

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

            http.csrf().disable();

            http.requestCache().requestCache(new NullRequestCache());

            http.formLogin()
                .loginPage("/login")

                .loginProcessingUrl("/")

            .successHandler(new MySimpleUrlAuthenticationSuccessHandler())


                // Allow everyone to access the login URL
                .permitAll();



            http.logout()

                .logoutUrl("/home")


                .logoutSuccessHandler(JSON_LOGOUT_SUCCESS_HANDLER)

                .permitAll();




        http.authorizeRequests().anyRequest().authenticated();
            http.csrf().disable();



        }

        @Autowired
        protected void registerAuthentication(
                final AuthenticationManagerBuilder auth) throws Exception {

            // This example creates a simple in-memory UserDetailService that
            // is provided by Spring
            auth.inMemoryAuthentication()

                    .withUser("xxx")
                    .password("xxx")
                    .authorities("admin","user")

                    ;
        }

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

            http.csrf().disable();

            http.requestCache().requestCache(new NullRequestCache());


            http.formLogin()
                .loginPage("/login")
                .loginProcessingUrl("/")
                .successHandler(new MySimpleUrlAuthenticationSuccessHandler())
                .permitAll();
            http.authorizeRequests().antMatchers("/img/**").permitAll();// ALLOW GET RESOURCES FROM THIS FOLDER WITHOUT LOGGIN  !!!
    }