Spring Security(1)快速入门
基本介绍
Spring Security 的前身是 Acegi Security,在被收纳为Spring子项目后正式更名为Spring Security。
是一个比较常用的权限框架,主要的功能是认证和授权。同时对oauth2 也有很好的支持;
认证:认证是否是本系统的用户
授权:判断已经认证了的用户是否有某个操作的权限
官网文档: https://docs.spring.io/spring-security/reference/servlet/getting-started.html
中文文档: https://www.springcloud.cc/spring-security.html#overall-architecture
快速入门
Spring Security 和springboot集成很简单,只需要引入对应的starter就可以帮助我们完成默认的配置,并且还内置表单。
新建一个springboot项目
引入springsecurity 的依赖
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency> 引入此依赖会帮我们自动引入相关依赖

启动项目 观察启动日志会发现这么一行
Using generated security password: 85df3881-0e1c-42bd-8f58-8db9bd062e53
在系统启动的时候生成了一个密码;
访问web访问页面,已经帮我们自动生成了一个登录页面,并对其他的操作做了拦截。

默认的用户名为:user ,密码为日志中生成的字符;登录后即可访问;
当然这个用户名和密码是可以配置的,这样就可以使用自定义的用户名和密码和角色了;当然这样写死的用户名和密码不适合生产环境使用。
1
2
3
4
5
6spring:
security:
user:
name: zhangsan //用户名
password: 123456 //密码
roles: admin //角色新建controller 访问index 后,发现通过 httpServletRequest 能获取到当然登录人的信息和权限信息;
直接使用 httpServletRequest的 logout 方法可完成退出;
1 |
|
这是因为默认与servlet Api 做了集成,实现了对应的方法;
通过SecurityContextHolder 获取 SecurityContext 可以获取当前登录人的认证和授权信息;
总结:
spring boot 项目中直接引入security 的stared 就会默认为所有的请求增加认证控制,同时也提供了一个内置的登录页面。
未配置登录认证的相关的配置的时候 有一个默认的用户user 同时项目启动的时候会生成一个随机密码
spring security 与servlet api 做了部分的实现;
通过 SecurityContextHolder.getContext(); 能够获取到认证后的用户的权限等信息


