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

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

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

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

Замечание! После скачивания архива с исходными файлами статьи, не забудьте поменять данные для подключения к базе данных и указать адрес Вашего сайта. Всё это нужно сделать в файле 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 не перезатирает значение пользовательского

Источник

Игровой портал