对于糟糕的头衔感到抱歉,我不知道如何用文字表达。
我的问题是我使用Spring Initializr创建了一个项目:
Spring JPA
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
当我映射URL并尝试访问它时,我得到了这个不错的登录表单:
但是当我用
覆盖安全性时@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("admin").roles("ADMIN");
}
}
我得到了这个丑陋的登录表单
我猜是因为在覆盖配置时,有些东西正在改变Spring使用的登录表单,或者我使用的是Spring安全错误。
有人能告诉我为什么会这样吗?谢谢!
答案 0 :(得分:0)
第一个不错的登录表单属于您的浏览器。如果您尝试使用其他浏览器,则会看到不同的结果。当您的浏览器请求应用程序的URL时,您的应用程序会使用未经授权的代码进行响应,然后,您的浏览器会要求您提供凭据以重试请求。
丑陋的登录表单是Spring的默认设置。您可以根据需要对其进行样式化。您可以看到this或this示例来帮助您入门。您需要添加一些CSS。
在扩展类configure(HttpSecurity http)
时,您没有覆盖的方法WebSecurityConfigurerAdapter
的默认实现如下所示:
protected void configure(HttpSecurity http) throws Exception {
logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin().and()
.httpBasic();
}
.formLogin()
是您获取丑陋登录表单的地方。