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