一、认证(authentication)
- 用户认证:就是判断一个用户的身份是否合法的过程
- 认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源
- 常见的用户身份认证方式:
- 用户名密码登录
- 二维码登录
- 手机短信登录
- 指纹认证
- 人脸识别
...
- 认证流程:
二、会话(session)
2.1.什么是会话:
- 用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保存在会话中,在会话中可以保持当前用户的登录状态
- 常见的会话方式有
基于session方式、基于token方式
2.2.基于session的认证方式:
a.认证流程:
- 用户认证成功后,服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的sesssion_id 存放到 cookie 中
- 用户客户端在请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户的合法校验
- 当
用户退出系统或session过期销毁时,客户端的session_id也就无效了
b.说明:
- 基于session的认证方式由Servlet规范定制,服务端要存储session信息
需要占用内存资源
,客户端需要支持cookie
2.3.基于token的认证方式:
a.认证流程:
- 用户认证成功后,服务端生成一个token发给客户端
- 客户端可以放到 cookie 或 localStorage等存储中,每次请求时带上 token,服务端收到token通过验证后即可确认用户身份
- 可以使用Redis 存储用户信息(分布式中共享session)
b.说明:
- 基于token的方式则一般不需要服务端存储token,并且不限制客户端的存储方式
- 如今移动互联网时代更多类型的客户端需要接入系统,系统多是采用前后端分离的架构进行实现,所以基于token的方式更适合
三、授权(authorization) :
3.1.为什么要授权
- 1.授权就是为了控制资源被访问
- 2.因为不同的用户可以访问的资源是不一样的
3.2.什么是授权
- 1.授权就是给用户颁发权限
- 2.授权是用户认证通过后,根据用户的权限来控制用户访问资源的过程
- 3.拥有资源的访问权限则正常访问,没有权限则拒绝访问
3.3.基于角色的访问控制:
- 基于角色的访问控制简称为RBAC(Role-Based Access Control) 模型
- 用户、角色、权限本质:就是把权限打包给角色(角色拥有一组权限),分配给用户(用户拥有多个角色)。
最少包括五张表 (用户表、角色表、用户角色表、权限表、角色权限表)