我在 src/main/webapp/my-login.html 下有带有自定义登录页面的 Spring Boot 应用程序。我配置 Spring Security 如下:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and()
.formLogin().loginPage("/my-login").permitAll().and()
.csrf().disable();
}
}
如何使 HTTP GET 到/my-login 返回我的 HTML 页面?我知道它被命名为“my-login.html”而不是简单的“my-login”,但是删除 .html 扩展名会让 Chrome 变得疯狂(它试图下载该文件......)。我尝试将 HTML 文件(带或不带扩展名)放在 src/main/webapp 或 src/main/resources/static 下。
另请注意,我没有使用 Thymeleaf,目标前端框架将是 AngularJS。我也对优雅的解决方案感兴趣(我认为我想要实现的目标非常简单)-我认为我使它与 loginPage("/my-login.html") 一起工作,但 REST 端点似乎不正确.
最佳答案
您可以设置 View Controller 将请求转发到 my-login.html...
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/my-login").setViewName("forward:/my-login.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
关于java - Spring Security 表单登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706295/