1.spring security概述
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。
Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。像所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求。
安全:网络资源需要被保护起来,所以需要安全框架。基本思路对需要验证的请求做详细复杂的验证逻辑后才能访问到后端资源。
认证授权
- 认证(authentication):验证身份(证明你是谁),例如:登陆名密码,手机号,各种认证协议http basic,http token,http 摘要认证,刷脸.
- 授权(authorization):往往在认证之后执行的,你能干什么.例如:张三登陆可以发起请假申请,但是无法审批请假申请,李四可以请假申请,同时可以审批比自己级别低的员工的请假.
2.安全框架为什么选择security
2.1同类产品shiro
apache shiro 也是一种安全框架,相比于security来讲,应用更简单,所以用户群体比较大,但是功能没有security强大.
在springboot出现之前 security配置复杂度确实很高,所以较多的选择是shiro,但是springboot出现之后,,springboot实现了自动配置,这种复杂度极大降低,而且功能强大,更多的开发者选择是security。
2.2强大的技术后盾
spring框架子项目.spring框架应用之广泛,功能之强大,更新之迅速.
2.3整合了授权协议oauth2
spring securit5.0,整合了授权协议oauth2.用于第三方授权的广泛使用的协议.
3.入门案例
3.1需要在pom文件中导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3.2编写启动类
@SpringBootApplication
public class StarterSecurityDemo {
public static void main(String[] args) {
SpringApplication.run(StarterSecurityDemo01.class,args);
}
}
3.3编写控制器
@RestController
public class AdminController {
@RequestMapping("/admin/write")
public String write(){
return "写入数据";
}
@RequestMapping("/admin/update")
public String update(){
return "更新数据";
}
@RequestMapping("/admin/delete")
public String delete(){
return "删除数据";
}
@RequestMapping("/user/read")
public String read(){
return "读取数据,不需要权限";
}
}
3.4启动测试
访问http://localhost:8080会自动跳转到 http://localhost:8080/login 登录界面
如果没有设置登录的用户名和密码,那么默认的用户名是user ,密码在访问时后端有生成和提示
输入用户名密码登录
输入控制器中写的映射地址,可以实现访问
输入错误的访问路径会出现错误页面