部署在Linux-Server上时Spring Security崩溃

时间:2016-09-30 15:27:01

标签: java linux spring spring-mvc spring-security

我们遇到了Spring网络服务的问题。 我们使用Spring Security来保护我们的管理后端,以便生成api密钥。当我们在本地机器(Windows和macOS)上部署它时,它工作正常,页面加载。如果我们尝试将其部署在具有Debian或Ubuntu的VM上,则未安全的端点加载正常,但是一旦我们点击管理员后端,服务器就会锁定并且不会加载页面。我们尝试使用git repo中的gradle任务bootRun来部署它,编译一个war并将其加载到一个tomcat实例中并编译一个jar并运行它,这些都没有用。我们在控制台中没有任何异常,它看起来运行正常,但是,在我们点击后端后,没有其他页面加载,甚至是之前正在运行的页面。

这是安全配置

ggplot(testDF %>%
         mutate(id = factor(id, levels = forSort$id[order(forSort$n)]))
       , aes(x=relative_timestamp
             , y= id
             , color=action)) +
  geom_point()

这是控制器

ggplot(testDF %>%
         mutate(id = factor(id, levels = forSort$id[order(forSort$max)]) )
       , aes(x=relative_timestamp
             , y= id
             , color=action)) +
  geom_point()

这是我们的build.gradle

package me.probE466.config;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.*;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.*;


@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
//        auth
//                .inMemoryAuthentication()
//                .withUser("user").password("password").roles("ADMIN");
    }

    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/post");
        http.authorizeRequests()
                .antMatchers("/admin/**")
                .authenticated()
                .antMatchers("/**").permitAll().and().httpBasic();
    }
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

好的,我们想出来了......:

在Spring安全开始时(应该更仔细地阅读)它说:

package hello;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}

我们的配置中缺少这个。仍然不知道它为什么在我们的客户端工作(它仍然可以在它们上面工作)但不在linux盒子上,但是在我们添加它之后,它也在那里工作得很好。供将来参考:每个受保护的控制器 NEEDS 在此处注册...至少在我们的服务器上