簡體   English   中英

處理所有Rails請求共有的用戶ID哈希的最佳方法

[英]best way to handle user id hash common to all rails requests

每個客戶端由哈希標識,並與每個請求一起傳遞給服務器。 在這種情況下,處理跟蹤用戶會話的最佳方法是什么?

我正在為用戶帳戶等使用restful_authentication。預計很大一部分請求將源於沒有用戶帳戶而只有唯一的哈希。

我對處理會議方式的了解有限,因此請記住這一點。 :)

在URL中使用此哈希意味着您沒有Rails內置會話。 會話的重點是在請求之間提供某種狀態感。 您已經提供了這種狀態,並看到您正在傳遞此哈希,因此我認為您可以刪除restful_authentication插件並改為執行以下操作:

class ApplicationController < ActionController::Base
  def require_login
    if params[:access_key]
      @current_user = User.find_by_access_key(params[:access_key]) || restrict_access
    else
      restrict_access
    end
  end

  def restrict_access
    flash[:error] = "You have to log in to access that."
    redirect_to root_path
  end
end

然后,在需要登錄才能訪問的控制器中執行before_filter :require_login

取決於您要執行的操作,但是session哈希可以提供您想要的內容。 會話將自身存儲在某個位置(加密的cookie,數據庫或服務器上的文件),並在cookie中將唯一的標識符發送給客戶端(類似於您的“哈希”)。 在后續請求中,將讀取cookie,並將相應的用戶會話數據恢復到session哈希。

session[:user] = currently_logged_in_user.id
# ... next request ...
session[:user] # returns the currently logged in user's id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM