2011-02-22 5 views
4

ユーザーがサインアップHI、レール

は私が私の見解/ユーザー/ new.html.erb

でRailsアプリケーションでのサインアップ機能のいくつかの疑問(2.3.10)

を持っていながら、セッションを作成します私のユーザモデルでは、私のユーザーコントローラ

before_filter :login_required, :except => [:new, :create, :forgot, :reset, :process_forgot_password, :activate] 

def new 
    @user = User.new 
end 

def create 
    @user = User.new(params[:user])  
    if @user.save 
    redirect_to "/blogs/home",:notice => "signed up" 
    else 
    redirect_to "new" 
    end 
end 

<div id="signup_form" style="display:none;" class="login-drpdwn "> 
    <% form_for :user, :url => users_path do |f| -%> 
    <%= error_messages_for 'user' %><br/> 
    <div> 
     <p> Enter your name </p> 
     <%= f.text_field :name, :class => "text_box" %> 
     <p> Enter your login name </p> 
     <%= f.text_field :login, :class => "text_box" %> 
     <p> Email ID</p> 
     <%= f.text_field :email, :class => "text_box" %> 
     <p> Password</p> 
     <%= f.password_field :password, :class => "text_box" %> 
     <p> Confirm your password</p> 
     <%= f.password_field :password_confirmation, :class => "text_box" %> 
     <div class="textalign_right"> 
     <input type="submit" value="Submit" class="submit_button rounded_corner"/> 
     </div> 
    </div> 
    <% end %> 
</div> 

私のセッション制御装置において
before_save :encrypt_password 
attr_protected :id, :password_salt 
attr_accessor :password, :password_confirmation 

def self.authenticate(email, password) 
    user = find_by_email(email) 
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt) 
    user 
    else 
    nil 
    end 
end 

def encrypt_password 
    if password.present? 
    self.password_salt = BCrypt::Engine.generate_salt 
    self.password_hash = BCrypt::Engine.hash_secret(password, password_salt) 
    end 
end 

- 私はサインアップページを送信する際の方法

def create 
    @current_user = User.find_by_login(params[:login].downcase) 
    if @current_user.blank? || params[:password] != @current_user.password_hash 
    @current_user = nil 
    render :action => "new" 
    else 
    session[:user_id] = @current_user.id 
    session[:close_time] = 1800.seconds.from_now 

    if @current_user.last_login.nil? 
     @login = LastLogin.new 
     @login.user_id = @current_user.id 
     @login.login_at = Time.now 
     @login.save 
    else 
     @login = @current_user.last_login 
     @login.last_at = @login.login_at 
     @login.login_at = Time.now 
     @login.login_count += 1 
     @login.save 
    end 

    if session[:return_to] 
     redirect_to session[:return_to], :protocol => USE_PROTOCOL 
     session[:return_to] = nil 
    else 
    end 
    end 
end 

を作成し、ユーザーはそれを持っているように、そのブログ/ホームページに向かわないので、セッション を作成しなくなっていますbefore_filter:

答えて

4
 
    session[:id] = @current_user.id 
認証システムのラインを含め、この 私のコードを持っていない解決方法..ブログコントローラであっ

をlogin_required

+0

どこに行を挿入するのですか?/ – useranon

+0

Createメソッドで7行目を修正します。したがって、一般的に言えば、セッション[:user_id]の代わりにあらかじめ定義されたセッション[:id] –