我在application.properties中将contextPath设置为具有spring security的spring boot应用程序中的server.contextPath = / myWebApp,默认url为/ login它没有将上下文路径设置为/ myWebApp并将我重定向为/ login而不是/ myWebApp /登录。如何使用spring security 4.0设置contextPath?由于tomcat以context [] ..而不是在容器中部署app来发出警告。
答案 0 :(得分:1)
我通过在 Application.properties 文件中设置 server.servlet.context-path 解决了此问题, / p>
代码示例
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