You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net Core 6 Web API对接Xamarin应用的记住我与忘记密码实现咨询

项目背景

我正在开发适配Xamarin应用的车辆追踪WebAPI,该WebAPI基于.NET 6构建,将由Xamarin移动应用调用。此前我没有相关功能的开发经验,因此在正式启动开发前希望核实相关实现方案。
Xamarin应用UI如下:
Xamarin应用UI

核心疑问

我目前有两个需要确认的核心实现点:

  • 如何在ASP.Net Core 6 Web API侧实现可适配Xamarin应用的*Remember me(记住我)*功能?
  • 如何在Web API侧实现可适配Xamarin应用的*Forgot password(忘记密码)*功能?

现有参考代码

[HttpDelete("{id}")]
[ServiceFilter(typeof(ValidateEmployeeForCompanyExistsAttribute))]
public async Task<IActionResult> DeleteEmployeeForCompany(Guid companyId, Guid id)
{ 
      var employeeForCompany = HttpContext.Items["employee"] as Employee; 
      _repository.Employee.DeleteEmployee(employeeForCompany);
      await _repository.SaveAsync();
      return NoContent();
}

实现方案解答

1. Remember me(记住我)功能实现思路

WebAPI本身是无状态的,记住我功能核心是长期有效身份凭证的下发和校验,适配Xamarin端不需要依赖Cookie,直接用Token方案即可落地:

  • 首先给登录接口新增rememberMe布尔类型入参,用户勾选记住我选项后,Xamarin端调用登录接口时传true
  • 服务端基于JWT实现身份认证,普通登录场景下Token有效期设为2小时即可,勾选记住我的场景下Token有效期可设置为7~30天,同时可以配套生成一个有效期更长的Refresh Token,存储在对应用户的表字段中
  • Xamarin端拿到Token和Refresh Token后,存储在移动端安全存储区域(可直接用Xamarin.Essentials提供的SecureStorage类),应用下次冷启动时优先读取本地存储的Token,如果还在有效期可以直接跳过登录进入主界面,Token过期就用存储的Refresh Token调用刷新接口换取新的有效Token,无需用户重新输入账号密码
  • 服务端侧需要做好Token过期校验、Refresh Token合法性校验,用户主动登出时将对应Refresh Token置为失效,避免凭证被盗用。

2. Forgot password(忘记密码)功能实现思路

该功能核心是账号身份核验+密码重置,不需要依赖浏览器跳转,完全可以在原生交互流程内完成适配:

  • 第一步开发验证码发送接口,入参为用户绑定的手机号/邮箱,服务端先校验对应账号是否存在,校验通过后生成6位数字验证码,有效期设置为5~10分钟,存储在Redis或者对应用户表字段中,再调用短信/邮件推送服务把验证码发给用户
  • 第二步开发密码重置接口,入参为账号、验证码、新密码,服务端先校验验证码是否正确、是否在有效期内,所有校验通过后将用户表中的密码哈希更新为新密码的哈希值,返回重置成功即可
  • Xamarin端对应做两个交互页面,第一个页面对应用户输入账号触发验证码发送,第二个页面对应用户输入验证码和新密码提交重置,整个流程无需跳转Web页面,完全在移动端内完成。

内容的提问来源于stack exchange,提问作者User456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:36:06