лучший способ обработать хеш идентификатора пользователя, общий для всех запросов rails - PullRequest
1 голос
/ 22 декабря 2008

Каждый клиент идентифицируется хэшем, который передается вместе с каждым запросом на сервер. Каков наилучший способ отслеживания сеанса пользователей в этом случае?

Я использую restful_authentication для учетных записей пользователей и т. Д. Ожидается, что большой процент запросов будет происходить без учетной записи пользователя, а только с уникальным хешем.

Мое понимание того, как обрабатывать сессии, ограничено, поэтому, пожалуйста, имейте это в виду. :)

Ответы [ 2 ]

2 голосов
/ 25 декабря 2008

Использование этого хэша в 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 в контроллерах, где для доступа требуется логин.

1 голос
/ 22 декабря 2008

Зависит от того, что вы пытаетесь сделать, но хеш session может дать то, что вы хотите. Сеанс хранит себя где-то (либо зашифрованный файл cookie, базу данных или файл на сервере) и отправляет клиенту уникальный идентификатор (аналогично вашему «хешу») в файле cookie. При последующих запросах cookie считывается, и данные сеанса соответствующего пользователя восстанавливаются в хэш session.

session[:user] = currently_logged_in_user.id
# ... next request ...
session[:user] # returns the currently logged in user's id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...