我对 Rails 比较陌生,现在我正在开发一个简单的登录注销系统。
在我的应用程序中,当我登录时生成的 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 中有一个应用程序并且我想将它转移到最新版本我需要做多少改变