Ruby on rails Rails身份验证问题

Ruby on rails Rails身份验证问题,ruby-on-rails,Ruby On Rails,我对rails比较陌生,现在我正在开发一个简单的登录注销系统 在我的应用程序中,当我登录时生成的URL为: localhost:3000/user/index/7 当我注销时,我回到根目录。但如果复制此URL并将其粘贴到另一个浏览器窗口中,我会立即登录,而不会直接进入登录表单。如何纠正这个问题 我尝试将用户id存储在会话哈希中,然后在注销时将会话中的用户id设置为零。但这是行不通的。需要帮助 编辑: 在我的家庭控制器 class HomeController < ApplicationCo

我对rails比较陌生,现在我正在开发一个简单的登录注销系统

在我的应用程序中,当我登录时生成的URL为:

localhost:3000/user/index/7

当我注销时,我回到根目录。但如果复制此URL并将其粘贴到另一个浏览器窗口中,我会立即登录,而不会直接进入登录表单。如何纠正这个问题

我尝试将用户id存储在会话哈希中,然后在注销时将会话中的用户id设置为零。但这是行不通的。需要帮助

编辑:

在我的家庭控制器

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
我的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中有一个应用程序,并且我想将它转换到最新版本,那么我需要做多少更改,您可以在控制器中为这些操作设置过滤器。在使用该过滤器之前,您可以检查会话是否为nil或值是否存在

否则,您可以观看此railscasts视频


这是基本身份验证的默认行为。登录后,所有凭据都存储在由浏览器维护的会话头中。如果你清除了缓存,那么它会再次提示输入密码……

我想你是在试图重新发明这个轮子。您可以在用户模型中使用
has\u secure\u password
,并生成
会话\u控制器来处理创建和销毁。这些方法基本相同,但带有
has_secure_password
标志。然后,您应该注意正确地销毁会话。

我确实建议使用现有的身份验证系统,如

在这个网站上,你可以很容易地了解到其他现有系统的概况,以及它们的流行程度和开发活动。


你真的不需要自己编写这样的东西,但是如果你真的喜欢这样做,也许这对你也有帮助。但我建议绝对设计。

如何实现基本身份验证?在我家控制器中:您使用的是什么版本的Rails?我使用的是Rails 2.3.17@dogbert您不应该使用过时的软件。请安装Rails 3.2.13
has_secure_password
对会话不起任何作用。只要模型具有
password\u digest
属性,它只会添加一些方法来验证模型。开发人员负责清除登录时设置的任何会话属性。如果您想了解更多关于has_secure_密码的信息,我想这可以帮助您I love
设计
,这是一个伟大的宝石,但对于那些刚刚学习Rails或Ruby的人来说,我不建议一开始就使用它们,因为它只会抽象出框架/语言中所有很棒的东西。不过,Railscapsts事件是一个很好的建议。
ActionController::Routing::Routes.draw do |map|

  map.root :controller => "home",:action => "index"
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end