Android 移动客户端、服务器、数据完整性规则、逻辑复制

Android 移动客户端、服务器、数据完整性规则、逻辑复制,android,ios,design-patterns,data-integrity,duplication,Android,Ios,Design Patterns,Data Integrity,Duplication,我有移动应用程序和服务器。用户可以通过我的移动应用进行注册。用户输入其电子邮件和所需密码以便注册。有一些适用于密码的规则,例如,密码长度、允许的字符等。在允许用户继续注册之前,将根据这些规则集检查输入的每个密码 我的假设是服务器完全负责数据完整性和遵守所有逻辑规则。所以服务器必须检查所有数据。 因此,用户输入密码,密码(连同电子邮件)被发送到服务器,服务器同时进行检查,如果出现任何问题,会将错误返回给客户端,并显示一条描述错误的消息。 应用程序仅显示此消息:“密码必须至少包含一个数字”。已通知用

我有移动应用程序和服务器。用户可以通过我的移动应用进行注册。用户输入其电子邮件和所需密码以便注册。有一些适用于密码的规则,例如,密码长度、允许的字符等。在允许用户继续注册之前,将根据这些规则集检查输入的每个密码

我的假设是服务器完全负责数据完整性和遵守所有逻辑规则。所以服务器必须检查所有数据。 因此,用户输入密码,密码(连同电子邮件)被发送到服务器,服务器同时进行检查,如果出现任何问题,会将错误返回给客户端,并显示一条描述错误的消息。 应用程序仅显示此消息:“密码必须至少包含一个数字”。已通知用户

但是

服务器的回复到达客户端之前可能需要一些时间。等待5秒后,用户可能不高兴收到消息。 因此,我认为最好在请求之前检查密码,并迅速通知用户违反了规则。 最简单的解决方案就是在客户端代码中复制规则

这里是问题出现的时刻。逻辑重复是我真正想要避免的事情。因此,我正在考虑某种API端点,它以json或XML格式返回所有规则(例如:密码规则)。这些规则只能在服务器上配置,并且只要发生更改,所有客户端都会应用这些规则。 对我来说,这似乎是一个既能让我对客户端进行“快速密码符合性检查”又能避免逻辑重复的解决方案。但这看起来不是太复杂了吗


我的问题是:为了避免逻辑重复并使密码检查过程不依赖于网络连接质量,实施这些规则的最佳(推荐)方法是什么?

您的密码完整性检查(长度、字符等)应始终在客户端进行。密码有效性检查应始终由服务器处理。您不应该经历太多延迟,即使在3g上,对服务器端脚本进行简单的身份验证查询,除非服务器端的代码不符合标准


“重复规则”是含糊不清的,但不管怎样,我看不出你试图做什么有什么问题。创建一个专门用于处理客户端验证的类,或者如果应用程序是HTML5,则使用类似parsleyjs的库。

可能您还不了解这个问题。假设我有iOS和Android客户端应用程序。表示密码策略已更改(最小长度增加)。此更改必须应用于整个系统:客户端应用程序和服务器。想象一下,Android的家伙们(出于某种原因)忘记了更改完整性检查代码。在这种情况下,Android应用程序密码完整性检查逻辑将不同于服务器端。好的,我明白你的意思,但简单的检查,如“字符串长度”不应该限制对应用程序的响应,即使他们在手机上打开了很多应用程序。为了避免这种情况,从一开始就采用统一的密码解决标准,如最少8-16个字符等,这样你就不必打破惯例或对已部署+编译的应用程序进行持续更改。我理解你的担忧,但这不应该是一个微不足道的问题