为啥在入口点 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

使用 MingW 运行 OpenCV 项目时出现入口点错误

Java Jersey Rest:未找到提供程序类。 (访问 URL 时出现 404 错误)

在 WordPress 3.4 中使用 POST / GET 参数时出现 404

为啥我在尝试将大文件发布到核心 Web API 时出现 404

春季注销时出现错误 404