如何为Phone-book通讯录添加用户自主删除个人存储手机号的功能
实现思路与步骤
1. 数据库表结构前置校验
首先要确保你的手机号存储表和用户ID做了强绑定,参考user_phones表的必要字段:
id主键,单条手机号记录的唯一标识user_id关联用户表的用户ID,标记该条手机号的所属人phone_number存储的手机号内容
核心原则:所有删除操作必须基于当前登录用户的user_id做权限校验,禁止仅通过手机号记录ID直接执行删除,避免越权删除他人数据
2. 后端接口实现
2.1 接口参数约定
仅接收两类参数:
- 当前登录用户的身份凭证(从请求头获取,比如session、JWT token,禁止前端传递用户ID参数)
- 待删除的手机号记录ID
phone_record_id
2.2 接口逻辑流程
// 伪代码示例 1. 解析请求头的身份凭证,提取当前登录用户的user_id,校验登录状态有效性 2. 校验phone_record_id是否为合法数值 3. 到user_phones表执行查询:where id = phone_record_id and user_id = 当前用户id 4. 无匹配记录时返回错误:"无权删除该手机号或记录不存在" 5. 匹配到记录时执行删除语句:delete from user_phones where id = phone_record_id and user_id = 当前用户id 6. 返回操作成功响应
注意:删除操作必须同时携带id和user_id两个查询条件,哪怕上一步已经做过查询校验,双重校验避免并发问题或者查询逻辑漏洞导致的误删
3. 前端交互实现
- 用户登录进入手机号列表页后,每条归属用户本人的手机号条目后新增「删除」按钮
- 点击删除按钮弹出二次确认弹窗,避免用户误操作
- 用户确认删除后调用后端删除接口,请求头携带当前用户的身份凭证,参数携带对应手机号的记录ID
- 接口返回成功后,直接从当前列表移除对应条目,无需重新拉取全量列表提升体验
- 接口返回错误时,直接将错误信息提示给用户即可
4. 安全优化点
- 禁止前端传递
user_id指定删除归属,所有用户身份必须从服务端登录态中提取 - 不要直接用手机号作为删除条件,避免同一用户存储多条相同手机号时误删全部记录,必须用唯一的记录ID作为删除依据
- 如有软删除需求,将delete操作替换为update
is_deleted字段为1即可,权限校验逻辑和硬删除完全一致
内容的提问来源于stack exchange,提问作者Hashir Hamza
相关产品推荐
相关产品推荐

