好好学习,一起成长…
初识Spring Security
Spring Security概念
Spring Security是spring采用AOP思想,基于servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的
授权功能。是一款非常优秀的权限管理框架。
权限管理概念
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。
在权限管理的概念中,有两个非常重要的名词:
认证:通过用户名和密码成功登陆系统后,让系统得到当前用户的角色身份。
授权:系统根据当前用户的角色,给其授予对应可以操作的权限资源。
完成权限管理需要三个对象
- 用户:主要包含用户名,密码和当前用户的角色信息,可实现认证操作。
- 角色:主要包含角色名称,角色描述和当前角色拥有的权限信息,可实现授权操作。
- 权限:权限也可以称为菜单,主要包含当前权限名称,url地址等信息,可实现动态展示菜单。
用户与角色是多对多的关系,角色与权限是多对多的关系,用户与权限没有直接关系,
二者是通过角色来建立关联关系的。
Spring Security简单入门
- 首先创建spring boot项目,导入如下pom依赖
<!--spring security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 在src/main/resources/templates/目录下创建success.html页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>访问成功</h1>
</body>
</html>
- 编写HelloController控制器
@Controller
public class HelloController {
@RequestMapping("/success")
public String success(){
return "success";
}
}
- 启动测试
SpringBoot已经为SpringSecurity提供了默认配置,默认所有资源都必须认证通过才能访问。我们输入http://localhost:8089/success会跳转/login认证页面
那么问题来了!此刻并没有连接数据库,也并未在内存中指定认证用户,如何认证呢?
其实SpringBoot已经提供了默认用户名user,密码在项目启动时随机生成,如图:
认证通过可以继续访问处理器资源