Spring Boot集成Spring Security 搭建登录模块
以下是一个简化的Spring Boot整合Spring Security实现登录模块的示例代码:
// 导入相关依赖的包
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll() // 允许访问主页
.anyRequest().authenticated() // 其他请求需要认证
.and()
.formLogin() // 启用表单登录
.loginPage("/login") // 自定义登录页面
.permitAll() // 允许所有用户访问登录页面
.and()
.logout() // 启用注销
.permitAll(); // 允许所有用户注销
}
// 创建AuthenticationManager
@Bean
@Override
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
// 创建PasswordEncoder
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance(); // 用于测试,生产环境应使用更安全的编码方式
}
// 创建内存中的用户和角色
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.passwordEncoder(passwordEncoder())
.withUser("user").password("password").roles("USER");
}
}
在这个配置中,我们定义了一个简单的登录页面/login
,并且启用了注销功能。用户名和密码均为"user"和"password",角色为"USER"。在实际应用中,应该从数据库或其他存储中获取用户信息。同时,密码应该加密存储,并在认证过程中进行比对。
评论已关闭