Как выйти из системы пользователя, вошедшего в систему с помощью собственной стратегии разработки - PullRequest
0 голосов
/ 07 июня 2019

Мне нужно выйти из системы, если пользователь вошел в мое приложение Rails, используя собственную стратегию аутентификации Devise. Эта стратегия используется в дополнение к стратегии database_authenticable. Есть ли логика, которую мне нужно добавить в мою пользовательскую реализацию authenticate_user! метод в пользовательской стратегии? Также мне нужно реализовать метод destroy в контроллере пользовательских сессий?

В настоящее время моя пользовательская стратегия регистрирует пользователя нормально (пока жестко запрограммировано), но я не могу выйти из системы, поскольку действие выхода из системы вызывает мою пользовательскую реализацию authenticate_user! и они снова вошли в систему.

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

Насколько я правильно понял, это то, что позволим любому действию logout current_user в разработке.Если это так, то это можно реализовать следующим образом:

Скажем,

class SomeController < ApplicationController
  before_action :authenticate_user!

  def some_action
    if some_logic == true #implement some_logic to return boolean(true/false)
      sign_out resource
      flash[:notice] = ''
      flash[:error] = 'You are logged out!'
      root_path
    end
  end
end
0 голосов
/ 09 июня 2019

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

0 голосов
/ 07 июня 2019

Вы можете использовать обратный вызов skip_before_action в этом случае, как в вашем контроллере, который приведен ниже кода перед всеми действиями

 skip_before_action :authenticate_user, only: [:your_logout_action]

Это пропустит аутентификацию для вашего метода, и пользователь не сможет снова войти в систему.

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