У меня есть мобильное приложение и сервер. Пользователи могут зарегистрироваться через мое мобильное приложение. Для регистрации пользователи вводят свой адрес электронной почты и желаемый пароль. Существуют правила, применяемые к паролю, например длина пароля, допустимые символы и т. Д. Каждый введенный пароль проверяется в соответствии с этими правилами, прежде чем пользователь сможет продолжить регистрацию.Мобильный клиент, сервер, правила целостности данных, логическое дублирование
Мое предположение заключается в том, что сервер несет полную ответственность за целостность данных и соответствие всем логическим правилам. Поэтому сервер все равно должен проверять все данные. Таким образом, пользователь вводит пароль, пароль (вместе с электронной почтой) отправляется на сервер, сервер проверяет их и в случае каких-либо проблем возвращает ошибку клиенту с сообщением об ошибке. Приложение просто показывает это сообщение: «Пароль должен содержать хотя бы одно число». Пользователь уведомлен.
НО
Это может занять некоторое время, прежде чем ответить сервера достигнет клиента. Пользователь может быть недоволен получением сообщения через 5 секунд ожидания. Итак, я думаю, было бы неплохо проверить пароль перед запросом и быстро сообщить пользователю о нарушениях правил. Простейшим решением является просто дублирование правил в клиентском коде.
Здесь момент, когда проблема поднимает. Логическое дублирование - это то, чего я действительно хочу избежать. Поэтому я думаю о какой-то конечной точке API, которая возвращает все правила (например, правила пароля) в формате json или XML. Эти правила могут быть настроены только на сервере и всякий раз, когда они меняются - будут определенно применяться всеми клиентами. Мне кажется решение, которое позволяет мне сделать «быстрые проверки соответствия паролю» на клиенте и избежать дублирования логики. Но разве это не слишком сложно?
Мой вопрос: какой лучший (рекомендуемый) способ реализовать эти правила во избежание дублирования логики и сделать процесс проверки пароля не зависящим от качества сетевого подключения?
Возможно, вы не поняли проблему. Скажем, у меня есть приложения для iOS и Android. Изменить политику паролей (увеличена минимальная длина). Это изменение должно применяться во всей системе: как на клиентских приложениях, так и на сервере. Представьте, что Android-ребята забыли (по какой-то причине) изменить код проверки целостности. В этом случае логика проверки целостности пароля Android-приложения будет отличаться от серверной. – DaddyM
Хорошо, я понимаю, что вы имеете в виду, но простые проверки, такие как «длина строки», не должны дросселировать ответ на приложение, даже если у них есть много приложений, открытых на телефоне. Чтобы избежать этого, применяйте единые стандарты для платежеспособности паролей от get go, например min 8-16 chars и т. Д., Поэтому вам не придется нарушать соглашения или делать постоянные изменения в развернутом + скомпилированном приложении. Я понимаю ваши проблемы, но это не должно быть тривиальной проблемой – Coldstar