Выделите и встряхните текстовые поля при вводе неправильных учетных данных
В этом руководстве мы создадим код, чтобы посмотреть количество попыток входа в систему только для поля пароля. Было бы лучше, если бы вы не сообщили пользователю, в каком поле указаны неверные данные. Вместо этого выделите поля для имени пользователя / электронной почты и пароля - это затруднит взлом учетной записи. Конечно, есть и другие меры безопасности, такие как двухфакторная аутентификация, но я оставлю их для другого урока.
Простой интерфейс
Мы начнем с создания структуры представления с текстом для входа в VStack.
Объявите переменные имени пользователя / электронной почты и пароля для хранения введенных пользователем значений, затем создайте и добавьте в VStack поля имени пользователя / электронной почты и пароля. Сделайте поле Password
SecureField
.
Вы можете использовать некоторые символы SF для настройки своего поля. Ниже у меня есть символ person
для имени пользователя и lock
для пароля. Вставьте изображения внутрь HStacks
с соответствующим TextField
.
Добавьте забытый пароль, кнопки входа и регистрации в один и тот же VStack для завершения пользовательского интерфейса, как показано ниже:
Теперь у нас настроены все элементы пользовательского интерфейса.
Анимация
Затем мы создаем эффект встряхивания, используя GeometryEffect
. Отрегулируйте переменную по своему усмотрению. travelDistance
повлияет на то, как далеко TextField
будет перемещаться по горизонтали. numOfShakes
- это количество раз, когда TextField
встряхнется. animatableData
- количество попыток, взятых из LoginView
.
Объявите переменную для подсчета количества недействительных попыток входа в систему. Добавьте наложение, чтобы создать границу к HStacks
, который включает наш TextField
, затем добавьте модификатор к тому же HStack
, который принимает наш ShakeEffect
.
@State var invalidAttempts = 0
Внутри withAnimation
увеличивайте количество недействительных попыток каждый раз, когда пользователь нажимает кнопку входа в систему.
Все сделано! Затем вы можете ограничить количество неудачных попыток входа в систему, чтобы пользователи не злоупотребляли вашим сервером.