2013-05-03 277 views
0

我對rails比較陌生,現在我正在開發一個簡單的登錄註銷系統。Rails身份驗證問題

在我的應用程序,當我登錄生成的網址是:

本地主機:3000 /用戶/指數/ 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 

在用戶控制器我有一個logout方法:

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值。不過,我還有一個問題,如果我有在軌2.3.17的應用程序,我想將它轉移到最新版本,我會多少改變必須做出

+0

你如何實現基本認證? – 2013-05-03 11:10:23

+0

在我的家庭控制器中: – 2013-05-03 11:13:32

+1

您使用的是哪個版本的Rails? – Dogbert 2013-05-03 12:05:05

回答

0

這是基本身份驗證的默認行爲。登錄後,所有憑據都將存儲在由瀏覽器維護的會話標題中。如果你清除你的緩存,那麼它應該再次提示輸入密碼....

+0

downvote的原因??? – 2013-05-03 11:39:03

+0

+1糾正這種不公正。 – 2013-05-03 17:11:06

0

我認爲你正試圖在這裏重新發明輪子。您可以在用戶模型中使用has_secure_password,並生成sessions_controller以處理創建和銷燬。方法基本相同,但是標記爲has_secure_password。然後,您應該妥善保管會話。

+0

'has_secure_password'對會話沒有任何幫助。只要它具有'password_digest'屬性,它只會添加一些方法來驗證模型。開發人員負責清除會話屬性設置爲進行登錄。 – 2013-05-03 12:28:15

+0

如果您想了解更多關於has_secure_password的信息,我認爲這可以幫助您http://railscasts.com/episodes/270-authentication-in -rails-3-1 – Mattherick 2013-05-03 12:55:21

0

我真的建議使用現有的認證系統,如https://github.com/plataformatec/devise

在這個網站上,你可以很容易地獲得有關其它現有系統的概述,並有普及和發展的活動。 https://www.ruby-toolbox.com/categories/rails_authentication

你真的鴕鳥政策必須自己這樣的東西編程,但如果你真的喜歡這樣做,也許這也可以幫助你:http://railscasts.com/episodes/250-authentication-from-scratch-revised。但我絕對推薦設計。

+0

我喜歡'devise',它是一個偉大的寶石,但對於剛剛學習Rails或Ruby的人來說,我不會建議在開始時跳轉到使用這些,因爲它傾向於抽象出所有關於框架/語言真棒的東西。 Railscasts插曲雖然是很好的建議。 – 2013-05-03 14:20:28