完成邮箱密码重置功能中遇到的问题-创新互联
1.写完接口后用postman测试接口功能时发现所有Post请求都变成了非法登录,以前不登录都能直接请求的,想到是不是代码和git上有区别,仔细比对后发现没有影响,最后发现要先调用login接口进行一次登录,可能之前是同事已经帮我登录了,所以上次不用登录。
创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都网站建设、做网站质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式营销型网站需求,让再小的成都品牌网站建设也能产生价值!2.邮箱无法发送邮件,经检查每次登录要输入验证码,一开始以为是验证码导致的,后来想到发邮件相当于客户端,直接调用stmp服务的,登录邮箱后发现新申请的测试邮箱还没开通smtp服务,于是先设置了授权码,然后再代码中用这个授权码代替密码使用服务,成功发送邮件。
3.当邮件发送不成功时,报错信息最好在recoverWith中捕获,经过查询,发现recover和recoverWith的关系相当于map和flatMap,recover能够创建一个新future对象,该对象当计算完成时持有和原future对象一样的值。如果执行不成功则偏函数的参数会被传递给使原Future失败的那个Throwable异常。如果它把Throwable映射到了某个值,那么新的Future就会成功完成并返回该值。如果偏函数没有定义在Throwable中,那么最终产生结果的future也会失败并返回同样的Throwable。组合器recoverWith能够创建一个新future对象,当原future对象成功完成计算时,新future对象包含有和原future对象相同的计算结果。若原future失败或异常,偏函数将会返回造成原future失败的相同的Throwable异常。如果此时Throwable又被映射给了别的future,那么新Future就会完成并返回这个future的结果。
4.recoverWith中有如下一段代码:
case e: MessagingException => {
db.run {
DataCloudUsers
.filter(t => t.username === username && t.deleted === 0)
.map(_.password).update(x.password)
}.flatMap(_ => Future.failed(UnsuccessfulSendMail(x.username, x.email)))
之前flatMap写成map的时候,调用post接口一直返回值转换异常,后来发现可能就是map和flatMap的细微差别导致的,flatMap在按照映射规则转换完之后还会把结果从抽出来组成一个扁平化的数组,所以flatMap返回来的是Future类型的。
5.把如果不是MessagingException的情况用下划线代替作为recoverWith中的一个case的话,貌似不会执行,具体原因待研究。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:完成邮箱密码重置功能中遇到的问题-创新互联
链接分享:http://myzitong.com/article/djhopo.html