【问题标题】:Mobile client, server, data integrity rules, logic duplication移动客户端、服务器、数据完整性规则、逻辑复制
【发布时间】:2014-10-25 21:41:06
【问题描述】:

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

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

但是

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

问题出现的那一刻。逻辑重复是我真正想要避免的。所以我正在考虑某种 API 端点,它以 json 或 XML 格式返回所有规则(例如:密码规则)。这些规则只能在服务器上配置,并且无论何时更改 - 肯定会被所有客户端应用。 在我看来,解决方案既可以让我在客户端上进行“快速密码合规性检查”,又可以避免逻辑重复。不过是不是看起来太复杂了?

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

【问题讨论】:

    标签: android ios design-patterns data-integrity duplication


    【解决方案1】:

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

    “重复规则”含糊不清,但无论哪种方式,我都没有看到您尝试做的事情的问题。创建一个专门用于处理客户端验证的类,或者如果应用程序是 HTML5,则使用 parsleyjs 之类的库。

    【讨论】:

    • 可能你还没有理解问题所在。假设我有 iOS 和 Android 客户端应用程序。说密码策略已更改(最小长度增加)。此更改必须应用于整个系统:客户端应用程序和服务器。想象一下,Android 人员(出于某种原因)忘记更改完整性检查代码。在这种情况下,Android 应用密码完整性检查逻辑将与服务器端不同。
    • 好吧,我明白你的意思,但是像“字符串长度”这样的简单检查不应该限制对应用程序的响应,即使他们在手机上打开了很多应用程序。为避免这种情况,从一开始就采用统一的密码偿付标准,例如最少 8-16 个字符等,这样您就不必打破惯例或对已部署+编译的应用程序进行不断更改。我理解您的担忧,但这不应该是一个小问题
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多