私はレールに比較的慣れていないので、現在、単純なログイン・ログアウト・システムを開発しています。
生成された URL にログインすると、私のアプリでは次のようになります。
ローカルホスト:3000/ユーザー/インデックス/7
ログアウトすると、ルートに戻ります。しかし、この URL をコピーして別のブラウザ ウィンドウに貼り付けると、ログイン フォームに移動せずにすぐにログインできます。この問題を修正する方法。
ユーザーIDをセッションハッシュに保存しようとしましたが、ログアウト時にセッションのユーザーIDをnilに設定しました。しかし、それはうまくいきません。助けが必要です。
編集:
ホームコントローラーで
class HomeController < ApplicationController
def signin
user=User.find(:all,:conditions=>["user_login=? AND user_password=?",params[:user] [:username],params[:user][:password]);
if user!=nil
session[:user_id]=user.user_id;
redirect_to({:controller=>'user'})
end
end
end
ユーザーコントローラーにはログアウトメソッドがあります:
def logout
session[:user_id]=nil;
redirect_to({:controller=>'home'});
end
私の routes.rb ファイルは次のようになります。
ActionController::Routing::Routes.draw do |map|
map.root :controller => "home",:action => "index"
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
編集:
ユーザーコントローラーのインデックスメソッドでセッションハッシュのID値をチェックしていなかったこの問題を解決しました。しかし、別の質問があります。Rails 2.3.17 のアプリを持っていて、それを最新バージョンに移行したい場合、どのくらいの変更を加える必要がありますか?