如果用户尝试访问/登录,则将登录用户重定向到索引

时间:2015-08-05 10:48:50

标签: ruby-on-rails ruby-on-rails-4

所以我正在寻找一个我似乎无法解决的简单解决方案。铁路新手,因此试图学习并掌握基础知识。

当用户未登录并尝试访问各种页面时,会将其重定向到/ login。我想要的是阻止他们形成能够查看/登录页面,如果他们已经登录。

我怎样才能做到这一点?

更新

application_controller

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

sessions_controller

class SessionsController < ApplicationController

layout "empty"

def create
 user = User.find_by_user_name(params[:user_name])
 if user && user.authenticate(params[:password])
  if params[:remember_me]
      cookies.permanent[:auth_token] = user.auth_token
    else
      cookies[:auth_token] = user.auth_token
    end
  flash[:success] = "You are now logged in"
  redirect_to '/'
else
    flash[:error] = "Invalid username or password"
  redirect_to '/login'
 end
end

def destroy
 cookies.delete(:auth_token)
 flash[:error] = "You have successfully logged out"
 redirect_to '/login'
end

private

end

1 个答案:

答案 0 :(得分:3)

为动作before_action视图添加/login,如果您有current_user,则可以这样做

before_action :check_session, only: [:login]

def login
  # login page action
end

private

def check_session
  redirect_to root_path unless current_user.blank?
end

希望有所帮助!