У меня проблема с моей функцией входа в систему.
- Когда пользователь нажимает на ссылку выхода из системы, все работает нормально, сеанс уничтожается, и пользователь может войти в систему как другой пользователь.
Если в данный момент вошедший в систему пользователь закрывает браузер и возвращается на страницу входа в систему, или если пользователь просто нажимает кнопку возврата на странице входа в систему и пытается войти в систему как другой пользователь, пользователь направляется к пользователюранее вошли в приложение в этом браузере.
Это нежелательная функциональность.Я хотел бы дать пользователю возможность войти в любую учетную запись, которую он хочет, независимо от того, возвращается ли пользователь на страницу входа или закрывает окно и возвращается на страницу входа.
У меня естьпробовал 6 разных решений и ни одно из них не сработало.Кажется, что независимо от того, какие изменения я внесу в код, функция входа в систему всегда извлекает идентификатор пользователя из хеша сеанса [: warden.user.person.key] и использует его для входа в систему, независимо от того, что помещено в текстовое поле входа.Я пытался получить контроль над этим процессом, но потерпел неудачу при каждой попытке.
У меня закончились идеи, и мне нужна помощь, поскольку это считается дырой в безопасности нашей системы.
Пожалуйста, позвольте мне узнать, что еще вы хотели бы увидеть в коде.Я даю вам код контроллера сеанса и мои маршруты.
class SessionsController Devise::SessionsController
def new
session["devise.omniauth_data"]=nil
session[:last_registration_role]=nil
super
end
def create
if params['person']['remember_me'] == '1'
cookies.signed['rem'] = {
:value => params['person']['email'],
:expires => 1.year.from_now,
:httponly => true
}
end
super
end
def destroy
session["devise.omniauth_data"]=nil
session[:last_registration_role]=nil
super
reset_session
end
end
Маршруты
new_person_session GET /people/sign_in(.:format) {:action=>"new", :controller=>"sessions"}
person_session POST /people/sign_in(.:format) {:action=>"create", :controller=>"sessions"}
destroy_person_session GET /people/sign_out(.:format) {:action=>"destroy", :controller=>"sessions"}
person_password POST /people/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_person_password GET /people/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_person_password GET /people/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /people/password(.:format) {:action=>"update", :controller=>"devise/passwords"}