私はRailsを初めて使っています。私はMichael Hartl's Railsチュートリアルに従っていますので、私のコードは主にそこから借りています。ここにシナリオがあります:ユーザがRailsでログアウトした後にすべてのセッションを無効にするには?
私はComputer A
を使用して私のサイトにログオンします。次に、同じユーザーIDを使用してComputer B
を使用してサイトにログオンします。 Computer A
を使用してサイトからログアウトすると、Computer B
はログインしたままで、引き続き操作を実行できます。セキュリティ上の理由から、Computer A
がログアウトしたときにComputer B
に再度ログインさせていただきたいと思います。ログアウト時に特定のユーザーのすべてのセッションを無効にする簡単な方法はありますか?非常に感謝するいくつかのサンプルコードがある場合。
また、ログアウト時にreset_sessionを使用することをお勧めします。しかし、ユーザーのログアウト前またはログアウト後にreset_session
を使用する必要があるかどうか判断するのに問題がありましたか?
これは私のセッションコントローラからです:
def destroy
log_out if logged_in?
# Reset session to prevent session fixation vulnerability
reset_session
flash[:info] = "You are now logged out"
redirect_to root_url
end
これは私のセッションヘルパーからです:
# Forgets a persistent session
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
# Logs out the current user
def log_out
forget(current_user)
session.delete(:user_id)
@current_user = nil
end