Одноразовая авторизация по ссылке

Зачем перенаправлять после авторизации?

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

Стандартные средства ВордПресс не позволяют делать этого. Система следует четко заданной инструкции.

Разберем детально, как это сделать на любом сайте WordPress.

Как настроить переброс пользователя по ссылке после автризации?

Добрый день!
Представьте, на поддомене www.secret.site.ru расположен интернет-ресурс (сайт), доступ к которому осуществляется через страницу авторизации (требуется ввод пароля).
Но возникло следующее неудобство: если пользователь не авторизован и переходит по ссылке www.secret.site.ru/category-1/post-1/, то его, естественно, перебрасывает на страницу www.secret.site.ru/login.php, на которой расположена форма авторизации (ввода пароля). Сейчас после успешной авторизации пользователя перекидывает на Главную страницу сайта (www.secret.site.ru). Хотелось бы, чтобы после успешной авторизации на странице login.php пользователя перекидывало на ту страницу, на которую он собирался перейти, т.е. в данном случае на www.secret.site.ru/category-1/post-1/.
Возможно ли это реализовать и как? На сайте стоит обычная авторизация на php с использованием сессии.

Как отправить пользователю ссылку для входа в аккаунт?

Подскажите, пожалуйста, что-то мы сами не можем сообразить ))

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

Вопрос. Имэйлы, естественно, мы использовали те же самые, под которыми пользователи были зарегистрированы у нас на сайте, но никаких паролей им не создавали. Теперь же, когда мы даем ссылки на их профиль http://allinyou.vhod-v-lichnyj-kabinet.ru/my или раздел с тренингами http://allinyou.vhod-v-lichnyj-kabinet.ru/teach/control/stream, кто-то может спокойно зайти, а у некоторых система просит ввести e-mail и пароль. Как пользователю узнать свой пароль?
Вернее, как одновременно всем 3000 наших пользователей узнать свои пароли ))

Похожее:  Личный кабинет клиента АО «Мособлгаз» — Вход и регистрация. Мособлгаз – личный кабинет

Готовим клиентам информационное письмо о переносе личных кабинетов на ваш сервис. Может, быть можно туда вставить какие-то ссылки/переменные?

Будем благодарны за подсказку 🙂

Метод 1. плагин peter’s login redirect

Это простой способ, который позволяет настраивать перенаправления входа в систему на основе пользовательских ролей и разрешений (см. Как добавить новую роль пользователя в WordPress).

Для начала установите и активируйте Peter’s Login Redirect.

Дальше в админке перейдите Настройки > Login/logout redirects.

Опции позволяют настроить перенаправления для конкретных ситуаций:

  • пользователи,
  • роли,
  • уровни доступа.

Для примера будем перенаправлять всех вошедших в систему пользователей с ролью Редактор в админ-раздел Записи.

Для этого найдите раздел Роли, в опции Добавить выберите editor, задайте URL-ссылку в поле Ссылка входа и нажмите кнопку Добавить правило роли.

Опция Ссылка выхода служит для редиректа после выхода из системы.

Чтобы ваши правки сработали, кликните Обновить в самом низу.

Метод 2. вручную с помощью php-кода

Этот способ сложнее. Нужно редактировать файлы темы.

Все последующие действия предполагают редактирование functions.php — основного конфигурационного файла WordPress-темы. Если вы не знаете, как редактировать этот файл, то в этом случае поможет плагин ProFunctions.

Откройте functions.php активной ВордПресс-темы на сайте и добавьте строки:

Одноразовая авторизация по ссылке

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

Задача состоит из нескольких шагов:

  1. Сформировать ссылку.
  2. Отправить её на e-mail.
  3. При переходе по ссылке авторизовать пользователя и перенаправить на нужную страницу.
  4. В целях безопасности сделать ссылку одноразовой.

Для этого нам потребуется таблица:

Теперь разберём алгоритм скрипта, который будет вызываться перед отправкой письма пользователю:

  1. Получаем id пользователя, которому мы хотим создать ссылку и которому мы будем отправлять письмо.
  2. Генерируем случайный ключ, например, с помощью функции uniqid().
  3. Формируем адрес страницы, на который должен попасть пользователь после перехода по одноразовой ссылке.
  4. Добавляем в таблицу новую запись с данными полученными в предыдущих пунктах.
  5. Формируем ссылку вида: http://ваш_сайт/login.php?key=сгенерированный_ключ.
  6. Отправляем пользователю письмо с необходимой информацией и созданной ссылкой.

Дальше начинается работа скрипта login.php:

  1. Считываем значение key.
  2. По значению key выбираем запись из таблицы.
  3. Если записи не найдено, значит, ссылка уже была использована, либо является поддельной.
  4. По user_id в записи получаем логин и пароль из таблицы с пользователями и авторизуем его.
  5. Удаляем запись из таблицы с ключами.
  6. Делаем редирект по ссылке из поля “r” у записи.

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

А если Вы хотите научиться не только создавать, но и реализовывать алгоритмы на PHP, то рекомендую посмотреть этот курс.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://vhod-v-lichnyj-kabinet.ru)!

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Сохранение ссылки после перехода на авторизацию

Yii2. Доступ к системе имеют только авторизованные юзеры, контролируется behaviors в контроллерах. Если юзер открывает внутреннюю ссылку будучи не авторизованным, то его перекидывает на главную страницу, где есть авторизация. – Подскажите, как сделать так, чтобы его введенная ссылка не терялась при этом, а записывалась, скажем, в сессию? Ну, и при авторизации редиректил бы на нее, а не на дефолтную..

Ссылка для входа и выхода

Функция “wp_loginout” выводит ссылку для “входа” для неавторизованных пользователей и “выхода” для авторизованных. У функции есть всего два аргумента:

Ссылка для регистрации, входа и выхода

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

Для получения адреса страницы с формой авторизации используйте функцию “wp_login_url”. Эта функция распечатает ссылку для входа. Если пользователь кликнет на неё, то он попадёт на форму авторизации “/wp-login.php” :

wp_login_url( $redirect, $force_reauth );

У функции есть два параметра:

НазваниеТипОписание
$redirectстрокаАдрес страницы, куда надо отправить пользователя после выхода. По умолчанию: “” (та же самая страница)
$force_reauthлогическийНужно ли сделать принудительную переавторизацию, даже если куки авторизации уже установлены). По умолчанию: false (не нужно)

Пример использования:

Вывод формы для авторизации/регистрации

Функция “wp_login_form” выводит форму для авторизации и регистрации. У функции есть только один аргумент, в который необходимо передавать массив с параметрами:

wp_login_form( $args );

Рассмотрим ключи и значения массива “$args”:

Приведём пример использования этой функции:

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

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