В разделе admin я показываю список зарегистрированных пользователей. Теперь администратор может выбрать одного или нескольких пользователей/пользователей и уничтожить их сеанс (выйти из системы). Я не могу понять, с чего начать, пожалуйста, помогите мне.Выйти из системы с помощью devem gem rails
ответ
Вы можете использовать метод sign_out
в действие контроллера, передавая в объекте пользователя:
# Make sure only admins can do this
def sign_out_user
@user = User.find(params[:id])
sign_out @user
end
Больше информации здесь:
http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers%3asign_out
Учитывая пользователей является сбор вашей требуемые пользователи,
for user in users
sign_out user
end
Он должен решить вашу проблему.
Надеется, что это помогает :)
С его выводом администратора вместо пользователя. –
Вы проверили коллекцию пользователей? это могут быть объекты admin, отправленные в коллекцию пользователей. – Prem
Я даю объект пользователю sign_out Я также попробовал abort @ user.to_yaml, и это были пользовательские данные, но его выведение из системы admin –
Метод sign_out
обеспечивается Завещания не поможет. Я знаю, что в документации говорится, что он выйдет из «ресурса», который вы запросили, но если вы копаете сами камни (изобретатель и надзиратель), вы обнаружите, что когда вы даете ему объект, как пользователь, он просто вычисляет, что область (т. е.: пользователь), к которой принадлежит объект, и выводит всю эту область.
Сфера в Devise - это пространство имен для логинов. Возможно, у вас есть модель Customer, для которой требуются логины, а также модель поставщика, которая также требует входа в систему, и вы будете использовать для этого разные области. В большинстве приложений используется только одна область, привязанная к модели пользователя.
Возможно, вы используете :cookie_store
для своего хранилища сеансов, что по умолчанию является Rails. В этом случае невозможно выйти из одного пользователя, кроме вас. Devise хранит вашу регистрационную информацию в сеансе, которая хранится в файле cookie, а не в вашей базе данных. Их браузер имеет учетные данные, поэтому вы не можете напрямую удалить это.
Нужно ли использовать пользовательский контроллер или какой-либо контроллер? –
Я бы создал конкретное действие для пользователей admin. Я уточню свой ответ. – AlexBrand
Это позволит вам выйти из системы у определенного пользователя – AlexBrand