验证功能实现
public async Task<bool> VerifyCaptchaAsync(string token, string purpose = CaptchaPurpose.IDENTITY_VERIFICATION){SmsCaptchaTokenCacheItem currentItem = await GetToken(token);if (currentItem==null || currentItem.Purpose!=purpose){return false;}await RemoveToken(token);return true;}
实际业务中可能还需要Email验证 , 我也建立了电子邮箱验证码的领域服务类 , 只不过没有实现它 , 动手能力强的读者可以试着完善这个小案例:)
文章插图
Api实现AppService层创建CaptchaAppService.cs , 并写好接口
public class CaptchaAppService : ApplicationService{private readonly SmsCaptchaManager captchaManager;public CaptchaAppService(SmsCaptchaManager captchaManager){this.captchaManager=captchaManager;}[HttpPost]public async Task SendAsync(SendCaptchaInput input){await captchaManager.SendCaptchaAsync(input.UserId, input.PhoneNumber, input.Type);}[HttpPost]public async Task VerifyAsync(VerifyCaptchaInput input){await captchaManager.VerifyCaptchaAsync(input.Token);}[HttpPost]public async Task UnbindAsync(VerifyCaptchaInput input){await captchaManager.UnbindAsync(input.Token);}[HttpPost]public async Task BindAsync(VerifyCaptchaInput input){await captchaManager.BindAsync(input.Token);}}
文章插图
至此我们就完成了验证码相关逻辑的接口下一章将介绍如何重写Abp默认方法 , 以集成手机号登录功能 。
注意!不要将本示例作为生产级代码使用本示例中 , 验证码校验的接口并没有做严格加密 , 6位验证码也很容易被破解 , 因此需要考虑这些安全问题 。在实际生产代码中 , 验证的参数常用手机号+验证码做哈希运算保证安全 。
项目地址Github:matoapp-samples
经验总结扩展阅读
- 2023年9月19日拜观音求子吉日一览表 2023年9月19日拜观音求子好吗
- 2023年9月19日上香吉日一览表 2023年9月19日上香好吗
- 2023年农历八月初五宜烧香吗 2023年9月19日烧香吉日一览表
- 2023年9月19日酬神吉日一览表 2023年9月19日适合酬神吗
- 2022双十一的节日祝福语 2022双十一的朋友圈祝福语
- 2022双十一的祝福语 双十一的微信祝福语
- 2023年9月19日祀灶吉日一览表 2023年9月19日是祀灶的黄道吉日吗
- 2023年农历八月初五修建坟墓吉日 2023年9月19日修建坟墓吉日一览表
- 2023年9月19日修路好吗 2023年9月19日修路吉日一览表
- 2023年9月19日出殡吉日一览表 2023年农历八月初五出殡吉日