【SpringSecurity】1. 基础概念

专栏目录
未完待续…

基础概念

1. 认证

1.1 什么是认证

认证通常指的是确认某个事物或者某个人的真实性、合法性或者资格的过程。

认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。

在Web开发中,用户认证(登录)就是判断一个用户身份是否合法的过程。

1.2 常见的用户身份认证方式
  • 用户名密码登录
  • 二维码登录
  • 手机短信登录
  • 指纹认证
  • 人脸识别

2. 会话

2.1 什么是会话

用户认证通过后,为了避免用户每次操作都要进行认证,可将用户的信息保存在会话中。
会话就是系统为了保持当前用户的登陆状态所提供的机制,常见方式为:

  • 基于session方式
  • 基于token方式
2.2 基于session方式

用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的session_id存放在cookie中,这样客户端每次请求都会携带session_id来验证服务端是否存在session数据,以此进行用户身份的合法性校验,当用户退出系统或session过期后,客户端的session_id也就随之失效。

2.3 基于token方式

用户认证成功后,在服务端生成token发给客户端,客户端可以将该token在cookie或localStorage中存储。

这样客户端每次请求都会携带token,服务端收到请求后通过token即可验证用户身份。

除此之外,也可以使用Redis存储用户信息,在分布式中共享session

cookie和localStorage

cookie在页面跳转的时候,存在于请求头中,不需要额外编写代码令请求头携带cookie

localStorage是浏览器的本地存储,只存储在当前页面,进行页面跳转时默认不会携带localStorage的数据,需要单独编写代码

2.4 总结

基于session的认证方式是Servlet规范的,服务端存储session需要占用内存资源,且客户端要支持cookie。

基于token的方式则不需要服务端存储token,且不限制客户端的存储方式。

在前后端分离的架构中,更适合采用不限制客户端的token认证方式

3. 授权

授权是用户认证确认通过后,分配给用户的资源访问权限,根据权限来控制用户访问资源的过程。

拥有资源访问的权限可以正常访问,否则拒绝访问

4. RBAC-基于角色的访问控制

如果存在多个用户需要授予的权限都相同,那么在实现上会非常麻烦,要把相同的权限进行反复地大量地授予。

为解决这一问题,就可以使用**RBAC(Role-Based Access Control)**基于角色的访问控制,就是把权限打包授予给角色(该角色拥有一组权限),通过角色分配给用户(用户可以拥有多个角色)。

因此需要构建表用于在数据库存储:

  • 用户表
  • 角色表
  • 用户-角色表
  • 权限表
  • 角色-权限表

5. Java开发中的安全框架

框架描述
Shiro轻量级的安全框架,提供认证、授权、会话管理、密码管理、缓存管理等功能
SpringSecurity比Shiro功能更强,更复杂,权限控制粒度更细,对OAuth2有很好的支持,适用于Spring框架,集成于SpringBoot
自定义基于过滤器和AOP实现,难度大,效率低
  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值