如何使用spring security在spring boot中设置上下文路径

时间:2017-07-17 09:18:01

标签: spring-boot

我在application.properties中将contextPath设置为具有spring security的spring boot应用程序中的server.contextPath = / myWebApp,默认url为/ login它没有将上下文路径设置为/ myWebApp并将我重定向为/ login而不是/ myWebApp /登录。如何使用spring security 4.0设置contextPath?由于tomcat以context [] ..而不是在容器中部署app来发出警告。

2 个答案:

答案 0 :(得分:1)

我通过在 Application.properties 文件中设置 server.servlet.context-path 解决了此问题, / p>

代码示例

Application.properties

server.servlet.context-path = / myWebApp /


与此同时,您还可以根据需要访问登录页面 http://localhost:8080/myWebApp/login


答案 1 :(得分:0)

在Spring Boot中,您可以通过3种方式设置上下文路径。

首先在application.properties中,就像你一样。

server.contextPath=/myWebApp 

其次,更改也可以通过编程方式完成:

import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.stereotype.Component;

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8181);
        container.setContextPath("/myWebApp ");

    }

}

最后,直接传递系统属性:

java -jar -Dserver.contextPath=/myWebApp spring-boot-example-1.0.jar

Spring Security Config是:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/static/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .usernameParameter("username")
                .passwordParameter("password")
                .loginProcessingUrl("/j_spring_security_check")
                .failureUrl("/login?error=true")
                .defaultSuccessUrl("/index")
                .and()
                .logout().logoutUrl("/logout").logoutSuccessUrl("/login")
                ;

    }
}

如果没有任何进一步的更改,tomcat将自动启动/myWebApp/login