基于Rails中的登录状态显示不同的主页

时间:2010-08-17 22:10:07

标签: ruby-on-rails

我正在使用restful身份验证插件来验证我正在构建的应用程序的用户。与大多数好网站一样,当用户访问主页时,我想显示样板欢迎页面并可以选择登录或注册。但是,当用户登录时,我希望站点的根URL(即sitename.com)显示用户仪表板而不是标准问候页面。我假设这只是使用布局文件完成并检查用户是否是login_in?但它的逻辑似乎在困扰我。非常感谢提前。

2 个答案:

答案 0 :(得分:2)

我会这样做:你有你的main控制器,非登录用户可以访问,然后是第二个控制器(我们称之为admin/main),这是主页面登录用户。

index控制器的main操作中(假设您只想重定向索引操作;否则,您可以使用before_filter):

class MainController < ApplicationController
  def index
    redirect_to :controller => 'admin/main', :action => 'index' and return if logged_in?
  end
end

这样,如果登录用户尝试访问应用程序的根URL,它们将自动重定向到站点的登录区域(但URL不会更改)。

答案 1 :(得分:0)

您可以检查用户在登录操作时是否已登录,以及是否已重定向到信息中心操作。如果不是那么你可以继续正常登录。例如。在你的会话控制器

def new
  if logged_in?
    redirect_to :controller => 'dashboard', :action => 'index'
  end
end

您也可以在before_filter中执行此操作,以避免“污染”您的登录操作。 E.g。

before_filter :logged_in_users_go_to_dashboard, :only => [:create, :new]

def logged_in_users_go_to_dashboard
  redirect_to(:controller => 'dashboard', :action => 'index') if logged_in?
end