2013-04-24 3 views
1

В разделе admin я показываю список зарегистрированных пользователей. Теперь администратор может выбрать одного или нескольких пользователей/пользователей и уничтожить их сеанс (выйти из системы). Я не могу понять, с чего начать, пожалуйста, помогите мне.Выйти из системы с помощью devem gem rails

ответ

3

Вы можете использовать метод 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

+0

Нужно ли использовать пользовательский контроллер или какой-либо контроллер? –

+0

Я бы создал конкретное действие для пользователей admin. Я уточню свой ответ. – AlexBrand

+0

Это позволит вам выйти из системы у определенного пользователя – AlexBrand

1

Учитывая пользователей является сбор вашей требуемые пользователи,

for user in users 
    sign_out user 
end 

Он должен решить вашу проблему.

Надеется, что это помогает :)

+0

С его выводом администратора вместо пользователя. –

+0

Вы проверили коллекцию пользователей? это могут быть объекты admin, отправленные в коллекцию пользователей. – Prem

+0

Я даю объект пользователю sign_out Я также попробовал abort @ user.to_yaml, и это были пользовательские данные, но его выведение из системы admin –

0

Метод sign_out обеспечивается Завещания не поможет. Я знаю, что в документации говорится, что он выйдет из «ресурса», который вы запросили, но если вы копаете сами камни (изобретатель и надзиратель), вы обнаружите, что когда вы даете ему объект, как пользователь, он просто вычисляет, что область (т. е.: пользователь), к которой принадлежит объект, и выводит всю эту область.

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^