前言
问题背景
最近有这样的一个业务, 获取个人信息, 之前是前端获取token传userId, 现在接口改为后端获取token查询userId
主要区别
1.前端获取token的使用
1.1 存储与使用方式
- 前端通常将token存储在浏览器的本地存储活会话存储中, 例如用户登录成功后, 将返回的token存储起来, 以便后续的请求中使用
- 在发送后续的请求时, 比如使用Axios或Fetch等库进行HTTP请求, 会在请求的头部添加token, 以向服务器证明用户的身份
1.2 安全考虑
- 前端存储token存在一定的安全风险, 因为用户可以通过浏览器的开发者工具查看和修改存储的内容, 为了降低风险, 可以使用HTTPS协议来加密通信, 防治token在传输中被窃取.
- 避免将敏感信息存储在本地存储中, 并且在用户注销和会话过期时, 及时清除存储的token.
1.3 用户体验
- 前端获取token可以实现无刷新登录, 提高用户体验, 例如, 在用户登录时, 页面无需刷新页面即可继续操作, 并且在不同页面切换时, 可以快速验证用户身份.
2. 后端获取token的使用
2.1 存储与使用方式
- 后端通常将token存储在服务器的内存或数据库, 具体取决于使用token的管理策略, 例如, 使用JWT时, 服务器可以验证token的签名和有效性, 而无需在服务器端存储token的状态
- 当接收到带有token的请求时, 后端会解析token, 提取其中的用户信息. 并进行权限验证等操作. 例如: 在Java Spring Boot 应用中, 可以使用过滤器或拦截器来验证token
2.2 安全考虑:
- 后端可以更好地控制 Token 的安全性,例如对 Token 进行加密、设置过期时间、防止 Token 被篡改等。
- 后端还可以根据业务需求,对不同的用户或角色分配不同的权限,并在验证 Token 时进行权限检查。
2.3 性能和可扩展性:
- 后端获取 Token 可以更好地处理高并发请求,因为服务器可以利用缓存等技术来提高 Token 的验证效率。
- 同时,后端可以根据业务的发展,灵活地调整 Token 的管理策略,以满足不同的性能和安全需求。
总结
前端获取 Token 主要用于在浏览器中存储和发送 Token,以实现无刷新登录和用户身份验证。然而,前端存储 Token 存在一定的安全风险,需要采取一些措施来降低风险。 后端获取 Token 则主要用于在服务器端验证 Token 的有效性和用户身份,以确保请求的合法性和安全性。后端可以更好地控制 Token 的安全性和性能,并且可以根据业务需求进行灵活的调整。 在实际应用中,通常会结合前端和后端的 Token 获取和使用方式,以实现安全、高效的用户身份验证和授权。