学习Spring Security之前我们需要先了解些基本概念
什么是认证
为了保护系统的隐私数据和资源,判断一个用户的身份合法性的过程就是认证,比如现在账号密码登录,扫描二维码,指纹认证,人脸识别其实都包含了认证过程
什么是授权
授权是通过认证的用户根据用户的权限来控制用户访问资源的过程,比如支付宝使用红包功能必须要绑定银行卡,点外卖必须添加家庭住址
简介
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求
初体验
新建SpringBoot的Web工程,在pom.xml中添加web和Spring Security依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
新建配置类SecurityConfig重写configure(HttpSecurity http)和configure(WebSecurity web)
@Configuration //配置类
@EnableWebSecurity //开启SpringSecurity认证授权
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll() //放行主路径
.anyRequest().authenticated() //其他的请求全部经过验证
.and()
.logout().permitAll() //允许任意权限访问注销页面
.and()
.formLogin(); //允许表单登录
http.csrf().disable();
}
@Override
public void configure(WebSecurity web) throws Exception {
//忽略静态资源
web.ignoring().antMatchers("/js/**", "/css/**", "/images/**");
}
}
添加测试类TestController
@RestController
public class TestController {
@GetMapping("/")
public String home() {
return "hello spring boot";
}
@GetMapping("/hello")
public String hello() {
return "hello world";
}
}
启动项目,浏览器输入localhost:8080 结果如下,没有被拦截
再次输入localhost:8080/hello,此时被Security拦截,跳转到登陆页面
网友评论