本文共 2420 字,大约阅读时间需要 8 分钟。
Spring Security 是一个基于 Spring 应用程序提供声明式安全访问控制的框架,通过 IoC 和 AOP 等核心Spring功能,简化了企业系统安全配置的复杂性。
Spring Security 能够帮助开发者在基于 Spring 的企业应用中实现基于角色的访问控制( Role-based Access Control, RBAC )。它通过定义安全规则和接收令牌的方式,保护应用程序中的敏感资源,确保只有授权的用户能够访问这些资源。
基于 Spring Boot 搭建一个 web 项目,项目名称建议命名为 spring_security_demo
。这是一个典型的 Spring Boot 项目结构。
在项目的 pom.xml 中引入必要的依赖:
spring-boot-starter-security
:提供 Spring Security 的核心功能spring-boot-starter-web
:集成 Spring Web 组件spring-boot-starter-test
:用于测试环境支持这些依赖会在 Spring Boot 父类库中找到对应的版本,避免手动配置版本号。
创建 ApplicationConfig.java 文件,作为 Spring Boot 运行的主配置类:
@SpringBootApplicationpublic class ApplicationConfig { public static void main(String[] args) { SpringApplication.run(ApplicationConfig.class); }}
创建 AuthController.java 文件,负责处理登录成功后的跳转:
@Controllerpublic class AuthController { @RequestMapping("/loginSuccess") @ResponseBody public String loginSuccess() { return "登录成功"; }}
创建 WebSecurityConfig.java 文件,继承自 WebSecurityConfigurerAdapter,进行安全配置:
@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean public UserDetailsService userDetailsService() { InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(); inMemoryUserDetailsManager.createUser(User.withUsername("zs").password("123").authorities("admin").build()); return inMemoryUserDetailsManager; } @Bean public PasswordEncoder passwordEncoder() { return NoOpPasswordEncoder.getInstance(); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/login").permitAll() .anyRequest().authenticated() .and().formLogin() .successForwardUrl("/loginSuccess") .and().logout().permitAll() .and().csrf().disable(); }}
在浏览器中访问 http://localhost:8080/login
,将会自动定向安全页面。输入用户名 zs 和密码 123,成功登录后将重定向至 /loginSuccess
页面显示 "登录成功"。
在这个案例中,我们已经完成了一个基本的 Spring Boot + Spring Security 入门配置。主要包括以下步骤:
这个简单的案例展示了 Spring Security 的基本使用方式,适合用于快速搭建安全防护的 Spring 应用程序。
转载地址:http://dadgz.baihongyu.com/