簡體   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