ログイン機能に問題があります。
- ユーザーがログアウト リンクをクリックすると、すべてが正常に機能し、セッションが破棄され、ユーザーは別のユーザーとしてログインできるようになります。
現在サインインしているユーザーがブラウザーを閉じてログイン ページに戻った場合、またはユーザーが単に [戻る] ボタンを押してログイン ページに戻り、別のユーザーとしてサインインしようとした場合、ユーザーは以前にログインしたユーザーにリダイレクトされます。その特定のブラウザ上のアプリケーションに。
これは望ましくない機能です。ユーザーがログイン ページに戻るかどうか、またはウィンドウを閉じてログイン ページに戻るかどうかに関係なく、ユーザーが任意のアカウントにサインインできるようにしたいと考えています。私は6つの異なる解決策を試しましたが、どれもうまくいきませんでした. コードに変更を加えても、ログイン機能は常に session[:warden.user.person.key] ハッシュからユーザー ID を取得し、ログイン テキスト フィールドに何が入力されても、それを使用してログインするようです。私はこのプロセスを制御しようとしましたが、すべての試みで失敗しました。
私はアイデアを使い果たしました.これは私たちのシステムのセキュリティホールと見なされているため、いくつかの助けが必要です.
コードについて他に何が欲しいか教えてください。セッション コントローラーのコードと私のルートを紹介します。
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"}