繁体   English   中英

如何设置登录用户和非登录用户的首页?

[英]How to set a home page for logged in users and non logged in users?

我将如何在Rails应用程序中进行设置,以便如果首次访问我的网站www.example.com的用户看到的页面可以登录,但是如果已经登录www.example.com的用户现在可以显示其登录信息,拥有自己的帖子,但仍使用相同的www.example.com网址。

如果他们已登录,或者是否有其他方法可以执行基于渲染模板的操作?

您可以将users#home设置为根URL:

UsersController:

def home
  if logged_in?
   @blogs = current_user.blogs
   render :action => 'logged_in'
  else
   render :action => 'non_logged_in'
  end   
end

app / views / users文件夹中有2个文件:logging_in.html.erb和non_logged_in.html.erb

史蒂夫·里奇特(Steve Richert)写了一篇很棒的文章。 他在定义路线时使用了高级约束请参见此处

这取决于您如何进行登录逻辑

通常,您应该执行两个操作,一个用于家庭/登录表单,另一个用于用户在家登录。 您可以在应用程序控制器上创建一个before_filter ,以便可以测试用户是否已登录,然后将其重定向到家(注销)。

如果您不使用自己的代码或其他解决方案,我想向您推荐这个叫做devise的 gem,它本身实现了很多登录逻辑,并且也很容易更改。

编辑:我认为此解决方案比提出的其他解决方案要好,我没有放置代码(尽管它与before_filter链接的代码完全相同),所以这里是:

class ApplicationController < ActionController::Base
  before_filter :require_login

  private

  def require_login
    unless logged_in?
      flash[:error] = "You must be logged in to access this section"
      render :controller => 'home', :action => 'not_logged_in'
    else
      # whatever code you need to load from user
      render :controller => 'home', :action => 'logged_in'
    end
  end

end

该解决方案非常有效,因为它可以测试用户是否在他尝试访问的每个控制器/操作中登录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM