基于 微服务 前后台分离方式 当下各公司比较流行通用得方式基于rbac逻辑 自定义UserDetails 以及登录认证 其他接口认证 推出登录 返回格式 异常处理 jwt radis 加密方式 等方式 项目需求和架构分析 和逻辑各个内容详细说明
时间: 2024-09-16 08:02:13 浏览: 44
当前,基于微服务的前后端分离架构中,RBAC(Role-Based Access Control,基于角色的权限控制)是一个常见的身份验证和授权机制。通过自定义`UserDetails`接口,系统可以根据用户的角色信息动态获取其拥有的权限。
1. 登录认证流程通常包括以下几个步骤:
- 用户提交用户名和密码到前端,然后发送请求到后台。
- 后台验证用户凭据,可能是对数据库的查询,也可能是与第三方如JWT(JSON Web Tokens)提供商交互。
- 如果验证成功,生成包含用户ID、过期时间等信息的JWT并返回给前端。
- 前端存储这个JWT,并在后续需要验证权限的请求头中附带它。
2. 接口认证:每个受保护的API会在服务器端检查请求头中的JWT,利用`UserDetailsService`解析JWT获取用户信息,验证其有效性。
3. 登录返回格式:一般会返回一个包含状态码、消息和JWT的有效响应体,例如JSON格式如下:
```
{
"status": "success",
"message": "Login successful",
"token": "your_jwt_here"
}
```
4. 异常处理:对于无效的JWT或认证失败,会抛出相应的异常,前端捕获并显示友好的错误提示。同时,后端应记录日志以追踪问题。
5. JWT加密:通常使用HS256(HMAC with SHA-256)这样的算法进行签名,确保数据的安全性和完整性。另外,还可以使用JWT的非对称加密功能,提高安全性。
6. Redis:作为缓存,可以用于存储已验证的JWT,减少数据库查询压力,提高性能。当JWT过期时,Redis中的值会被清除。
7. 项目需求和架构分析:这涉及到高可用、模块化、伸缩性强的架构设计,确保服务之间独立部署和故障隔离。同时,安全性和性能优化也是关键点。