所以我正在寻找一个我似乎无法解决的简单解决方案。铁路新手,因此试图学习并掌握基础知识。
当用户未登录并尝试访问各种页面时,会将其重定向到/ 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
答案 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
希望有所帮助!