spring-security 默认登录页面
在Spring Security中,默认的登录页面是由Spring Security提供的。如果你想自定义登录页面,你可以通过以下步骤来实现:
- 创建一个登录页面的HTML文件,比如
login.html
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="/login" method="post">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password" />
</div>
<div>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<input type="submit" value="Login" />
</div>
</form>
</body>
</html>
- 将登录页面放置在你的资源目录下,例如
src/main/resources/static
。 - 配置Spring Security来指定你的登录页面。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html") // 指定登录页面
.permitAll();
}
// 如果你需要在内存中配置用户,可以像下面这样配置
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
- 确保你的应用配置了Spring MVC,以便于可以正确地提供静态资源。
在上述步骤中,我们创建了一个简单的登录页面,并通过formLogin()
方法指定了这个页面。当用户访问一个需要保护的资源时,如果没有登录,Spring Security会自动跳转到这个登录页面。记得将登录页面放在可以被Web服务器访问的资源目录下,并确保CSRF保护是配置正确的。
评论已关闭