как работает чекбокс запомнить меня

Реализация функционала запомнить меня

как работает чекбокс запомнить меня. Смотреть фото как работает чекбокс запомнить меня. Смотреть картинку как работает чекбокс запомнить меня. Картинка про как работает чекбокс запомнить меня. Фото как работает чекбокс запомнить меня

Продолжаем работать и усовершенствовать нашу форму авторизации. Если Вы прочитали предыдущие статьи, то у Вас уже должны быть созданы формы регистрации и авторизации с функционалом подтверждения адреса электронной почты и с возможностью восстановить забытый пароль.

А в этой статье мы добавим к нашей форме авторизации функционал » запомнить меня «, который избавит пользователя от требования пройти авторизацию при каждом входе на сайт. Данный функционал работает следующим образом: при первом входе на сайт, если пользователь поставит галочку » запомнить меня «, то, у него на компьютере, на некоторое время, сохранится кука с неким токеном. С помощью этой куки, при следующем входе на сайт, пользователь авторизуется автоматически.

Замечание! После скачивания архива с исходными файлами статьи, не забудьте поменять данные для подключения к базе данных и указать адрес Вашего сайта. Всё это нужно сделать в файле dbconnect.php.

Под следующим входом, имеется в виду, когда пользователь завершил работу на сайте и закрыл его, потом через некоторое время зашёл заново на сайт.

И так, первое что нам нужно сделать, это добавить сам чек бокс » Запомнить меня « в форму авторизации. Открываем файл » form_auth.php » и перед строкой с кнопкой » Войти » и ссылкой » Забыли пароль? » добавляем эту строку:

Идём дальше. Как мы знаем, обработчиком нашей формы является файл » auth.php «. Поэтому открываем его и перед тем как добавить данные авторизации в сессию, нужно добавить этот код:

Как Вы поняли, здесь мы обрабатываем чек бокс » Запомнить меня «. Если галочка была поставлена, то мы создаём куку, которая содержит некий токен. А если галочка не была поставлена, то мы удаляем созданную куку.

Токен мы добавляем в базу данных, для того чтобы при следующем входе на сайт, мы смогли с помощью него вытащить нужные данные из базы.

Как мы знаем куки не безопасны для хранения данных, поэтому нельзя добавить в куку открытый пароль, потому что злоумышленник может украсть куки и с помощью них узнать данные для авторизации. Поэтому вместо пароля мы используем токен.

С первой частью мы закончили. Идём дальше. Представим, что пользователь поставил галочку » запомнить меня » и успешно авторизовался. Он погулял по сайту, написал пару комментариев и после этого вышел с сайта. Когда он заново зайдёт на сайт, то он должен авторизоваться автоматически, ведь он указал, чтобы его запомнили.

Так вот, для того чтобы организовать эту автоматическую авторизацию мы должны использовать куку с токеном. Нам нужно добавить код в тот файл, который подключается на всех страницах сайта, чтобы пользователя авторизовали с любой страницы. Вдруг он добавит, какую-ту страницу в закладках браузера.

Поэтому открываем файл » header.php » и в начале файла, сразу после функции запуска сессии, добавляем этот код:

Здесь мы проверяем, если кука с токеном существует и она не пуста, то мы делаем запрос к базе для выборки почтового адреса и пароля, где значение поля » password_cookie_token «, равна со значением куки » $_COOKIE[«password_cookie_token»] «.

И если такая запись существует, то мы в сессию добавляем почтовый адрес и пароль указанного пользователя. Вот таким образом и сделали автоматическую авторизацию.

Это ещё не всё, остался один момент. При нажатии на кнопку » Выход «, мы должны удалить куку с токеном. Открываем файл » logout.php » и перед тем как удалить данные из сессии добавляем этот код:

Мы здесь проверяем, если существует кука с токеном, то мы очищаем поле » password_cookie_token » и запускаем механизм удаления самой куки с токеном.

Вот теперь всё. С функционалом » запомнить меня « мы закончили.

Замечание! После скачивания архива с исходными файлами статьи, не забудьте поменять данные для подключения к базе данных и указать адрес Вашего сайта. Всё это нужно сделать в файле dbconnect.php.

Похожие статьи:

Видео по теме:

Понравилась статья?

Тогда поделитесь ею с друзьями и подпишитесь на новые интересные статьи.

Поделиться с друзьями:

Подписаться на новые статьи:

Поддержите пожалуйста мой проект!

Если у Вас есть какие-то вопросы или предложения, то можете писать их в комментариях или мне на почту sergiu1607@gmail.com. И если Вы заметили какую-то ошибку в статье, то прошу Вас, сообщите мне об этом, и в ближайшее время я всё исправлю.

Автор статьи: Мунтян Сергей

Источник

Check-box «Remember me»

Эмм. то есть после логаута в этой ситуации не нужно заново логиниться?

Эмм. то есть после логаута в этой ситуации не нужно заново логиниться?

Когда ты сделаешь логаут из приложения, то по идее, не должно быть введённого пароля и логина, по скольку чекбокс ведь установлен просто для запоминания сессии. Ну или, например, как у нашего провайдера, он заполняет автоматически логин и пароль когда кликаешь «Remember me» до того момента пока ты не нажмёшь «Delete» (удалить пароль и логин с автозаполнения).

Эмм. то есть после логаута в этой ситуации не нужно заново логиниться?

Когда ты сделаешь логаут из приложения, то по идее, не должно быть введённого пароля и логина, по скольку чекбокс ведь установлен просто для запоминания сессии. Ну или, например, как у нашего провайдера, он заполняет автоматически логин и пароль когда кликаешь «Remember me» до того момента пока ты не нажмёшь «Delete» (удалить пароль и логин с автозаполнения).

При чем тут автозаполнение вообще? Речь же о сессии, о кукисах (как самый распространённый вариант поддержания сессии), при логауте информация о сессии из кукисов удаляется. И при повторном открытии сайта, нужно заново логиниться. Автозаполнение лежит за пределами функциональности «remember me».

Смотрите скриншот. Чекбокс автоматически заполняет при каждом входе логин и пароль.
как работает чекбокс запомнить меня. Смотреть фото как работает чекбокс запомнить меня. Смотреть картинку как работает чекбокс запомнить меня. Картинка про как работает чекбокс запомнить меня. Фото как работает чекбокс запомнить меня remember my setup.PNG 90,78К 37 Количество загрузок:

Смотрите скриншот. Чекбокс автоматически заполняет при каждом входе логин и пароль.
как работает чекбокс запомнить меня. Смотреть фото как работает чекбокс запомнить меня. Смотреть картинку как работает чекбокс запомнить меня. Картинка про как работает чекбокс запомнить меня. Фото как работает чекбокс запомнить меня remember my setup.PNG 90,78К 37 Количество загрузок:

Значит в первый пункт: В зависимости от браузера.

Значит в первый пункт: В зависимости от браузера.

Хорошо, сойдёмся на этом. 🙂
Если обсуждать функциональность отдельно от окружения, то логин \ пароль нужно вводить всегда.
Если же принимать во внимание функционал браузера, то да он мог сохранить логин \ пароль и автоматически подставить в требуемые поля.

Источник

Реализовать checkBox в роли «запомнить»

Подскажите, пожалуйста, как мне сделать checkBox так же, как на программах и сайтах, там, где нужно произвести вход по имени и паролю, там всегда есть функция запомнить, чтобы при следующем входе программа уже не спрашивала имя и пароль.

2 ответа 2

Microsoft рекомендует следующий способ сериализации:
1. Выбираете пункт Settings в Solution.
2. Создаете переменную необходимого типа (в вашем случае bool).

как работает чекбокс запомнить меня. Смотреть фото как работает чекбокс запомнить меня. Смотреть картинку как работает чекбокс запомнить меня. Картинка про как работает чекбокс запомнить меня. Фото как работает чекбокс запомнить меня

Вопрос здесь не в checkbox’е, конкретная реализация в интерфейсе — дело десятое. Вам стоит подумать о том, как будет инсталлирована программа и где она будет хранить данные.

Если вы собираетесь хранить данные локально, это стоит делать в подкаталоге %APPDATA% с именем, как у вашей программы (по хорошему, конечно, вашей компании, но это, как я понимаю, в будущем). Данные будут доступны, понятно, только текущему пользователю ОС (ну и администратору, разумеется) — и это правильно.

По поводу хранения пароля, всё сложно. Если вы кладёте пароль в открытом виде, это «приглашение» украсть его. С другой стороны, даже если вы будете шифровать пароль, надёжного хранения пароля на локальной машине добиться вовсе невозможно, т. к. если ваша программа может его прочитать и расшифровать, а машина скомпроментирована, то и злоумышленник точно так же сможет. Поэтому возможно стоит шифровать, но не обещать никакой «безопасности» пользователю.

Хорошим компромиссом является хранение только имени пользователя, но не пароля. На то он и пароль, что известен только человеку.

Источник

Запомнить меня checkbox

У меня есть приложение winform которое имеет форму входа в систему. Я сохраняю информацию о пользователях в базе данных с тремя параметрами: имя пользователя, хешированный пароль, соль:

Я не могу сохранить введенный пароль напрямую и в следующий раз заполнить его textBox потому что я знаю некоторые программные средства, которые могут читать такие textBox файлы, как это, и это не защищает.

Вопрос:

Как я могу это сделать, не сохраняя пароль пользователя?

Если мне нужно сохранить некоторую информацию, как зашифровать их?

Нужно ли менять политику безопасности?

Обратите внимание, что это клиентское/серверное приложение и форма входа в систему, созданная для клиентской стороны.

Вы можете сохранить хешированное значение пароля в своей локальной базе данных, и у вас может быть скрытый флажок, в котором говорится, что вы заполнили информацию из базы данных, которая уже хеширована, и при запросе аутентификации вам не нужно хэшировать значение пароля еще раз.

РЕДАКТИРОВАТЬ Если пользователь пытается ввести пароль вручную, вы можете очистить значение текстового поля и изменить установленное флажком значение, так что теперь вы знаете, что значение не является хэшированным.

ИМХО, этого не может быть сделано. Если вы шифруете/хешируете/засовываете и сохраняете пароль в БД, вы не можете получить его обратно в виде обычного текста.

Конечно, вы можете обмануть пользователя (я расскажу вам), но вам нужно определить, что вы хотите сделать:

    Введите хотя бы пароль еще раз (каждый раз) даже после того, как пользователь попросит «запомнить меня». Это можно сделать легко, просто введите идентификатор пользователя и сохраните пароль. Никаких трюков. Легко и просто. Даже Google делает это для своих сайтов. Теперь трюк. Пусть пользователь вводит приложение без пароля, а просто имя пользователя. Вы можете просто ввести какое-то значение по умолчанию в поле пароля (пользователь будет считать, что пароль действительно извлекается, но вы будете программировать такой способ, когда всякий раз, когда выбирается опция «запомнить меня», вы просто заполняете эту информацию автоматически), и пусть пользователь переходит но это нехороший вариант, потому что потенциально любой, кто использует эту систему, сможет подключиться к вашему приложению. Вам необходимо будет позвонить по вашему требованию безопасности.

Согласно моему пониманию, если вы хотите remember me функциональность, вы должны/должны иметь ваш пароль, который хранится в любой форме для аутентификации пользователя.

Пользователь dbw просто разместил мой другой подход 🙂

Источник

Авторизация и механика чекбокса «запомнить меня» Есть решение

Тех. поддержка отфутболила сюда, вразумительного ответа от них добиться не смог.

Вопрос по механике работы чекбокса «запомнить меня». Мои ожидания по его работе следующие: если checked, то сессия авторизации хранится сколько угодно долго не зависимо от настройки php session.gc_maxlifetime сервера? Или у меня завышенные ожидания?

В чем разница состояний этого чекбокса?

Проблема описана была уже многими в разделе помощь, например в этой теме: https://support.webasyst.ru/fo.

3 ответа

Такой ответ получил от тех поддержки:

Работа механизма связанна с сессиями php, но прежде всего для неавторизованных пользователей, в этом случае работает session.gc_maxlifetime»

Я это понимаю так, что для авторизованного пользователя с отмеченной галочкой «запомнить меня» session.gc_maxlifetime ни на что не влияет. Поправьте если я ошибаюсь.

Стал ковырять и нашел баг на стороне авторизации вебасиста.

1) Форма авторизации на витрине /login/

При отправке формы с галочкой «запомнить меня» видим что отправляет два значения remember 1 и 0

как работает чекбокс запомнить меня. Смотреть фото как работает чекбокс запомнить меня. Смотреть картинку как работает чекбокс запомнить меня. Картинка про как работает чекбокс запомнить меня. Фото как работает чекбокс запомнить меня

Он и перезатирает то что выбирает пользователь.

2) Форма авторизации в бекенде /webasyst/
Там тоже самое только порядок инпутов обратный

Поэтому input hidden не перезатирает значение пользовательского

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *