为啥在入口点 url 中添加项目名称时出现 404
Posted
技术标签:
【中文标题】为啥在入口点 url 中添加项目名称时出现 404【英文标题】:Why 404 while add project name in entry point url为什么在入口点 url 中添加项目名称时出现 404 【发布时间】:2021-10-23 17:02:59 【问题描述】:如果使用 Spring 安全性运行项目,入口点 URL 是:
http://localhost:8099/login
这行得通。同时我需要将项目名称放在入口点 URL 中,如下所示:
http://localhost:8099/pojoname/login
下面是我正在使用的 Spring 安全配置:
@EnableWebSecurity
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter
@Autowired
private UserDetailsService userDetailsService;
@Bean
public AuthenticationProvider authProvider()
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(userDetailsService);
provider.setPasswordEncoder(passwordEncoder());
return provider;
@Override
protected void configure(HttpSecurity http) throws Exception
http
.csrf().disable()
.authorizeRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/register", "/registration", "/editProfile").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.usernameParameter("email")
.and()
.logout()
.permitAll();
@Bean
public PasswordEncoder passwordEncoder()
return new BCryptPasswordEncoder();
【问题讨论】:
您可以更改应用程序的上下文路径:server.servlet.context-path=/pojoname
。
您是否尝试将您的项目放入新的 pojoname 文件夹中?
@SIMBiosIS 如果我将我的 pojo 放在不同的文件夹中,路径永远不会改变,因为路径是由 spring security 产生的
但是如果您没有 pojoname 文件夹,那么您将如何调用http://localhost:8099/pojoname/login
?
【参考方案1】:
所请求的特性就是所谓的网络上下文(或以前的 Servlet 容器工作中的 Servlet 上下文)。
这在 Spring Boot 中得到了开箱即用的支持,并且可以使用配置属性 server.servlet.contextPath
和所需的值来切换/激活。
在您的 application.properties
文件中,添加以下行:
对于一个版本Spring Boot 2.0:
server.contextPath=/pojoname
对于一个版本> Spring Boot 2.0:
server.servlet.contextPath=/pojoname
【讨论】:
很高兴能得到帮助,如果它有效,别忘了接受答案:)以上是关于为啥在入口点 url 中添加项目名称时出现 404的主要内容,如果未能解决你的问题,请参考以下文章
在 chrome 中点击 localhost flutter web url 时出现 404 Not Found
Java Jersey Rest:未找到提供程序类。 (访问 URL 时出现 404 错误)
在 WordPress 3.4 中使用 POST / GET 参数时出现 404