Rails 3登录和注销取决于用户co​​okie

时间:2012-03-19 20:36:25

标签: ruby-on-rails ruby authentication

我希望我的主页显示单词logout和路径link_to logout_path以显示用户何时登录。

我有这个工作,但刚刚实现了一个记住我的单选按钮,并且使用user.id来识别用户到auth_token似乎搞砸了我的if和else语句。我真的无法弄清楚我需要改变什么。

我有以下内容:

会话控制器

class SessionsController < ApplicationController
def new
end

def create
    user = User.find_by_email(params[:email])
    if user && user.authenticate(params[:password])
        if params[:remember_me]
        cookies.permanent[:auth_token]
        else
        cookies[:auth_token]
        end
        redirect_to root_url
    else
        flash.now.alert = "Invalid email or password!"
        render "signup"
    end
end

def destroy
    cookies.delete(:auth_token)
    redirect_to root_url
end

end

我的主页的相关区域:

<div class="login">
                <li><% if session[:user_id] %>
                    <!-- user is logged in -->
                    <%= link_to "Logout", logout_path %>
                    <% else %>
                <!-- user is not logged in -->
                    <%= link_to "Login", login_path %>
                    /
                    <%= link_to "Sign up", signup_path %>
                <% end %></li>
            </div>

我的用户模型

class User < ActiveRecord::Base
has_secure_password
before_create { generate_token(:auth_token) }

validates_presence_of :password, :on => :create
validates_presence_of :email
validates_length_of :email, :within => 6..50
validates_length_of :password, :within => 6..30
validates_uniqueness_of :email, :case_sensitive => false, :on => :create
validates_format_of :email,    :with => /^[A-Z0-9_.%-]+@([A-Z0-9_]+\.)+[A-Z]{2,4}$/i,
                                :message => "must be a valid e-mail address"

def generate_token(column)
begin
    self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end

end

我的应用程序控制器:

class ApplicationController < ActionController::Base
protect_from_forgery

private

def current_user
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if  cookies[:auth_token]
end
end

人们可以提供的任何帮助都会非常感激,因为我在我的主页上尝试了各种不同的东西,似乎没有任何东西让它显示Logout。

由于

0 个答案:

没有答案