Сеансы и аутентификация пользователей в Padrino

Я очень новичок в Padrino (я работаю с PHP) и рубиновых веб-фреймворках в целом, и пытался понять, как реализовать простую систему аутентификации пользователей и управления сеансами, но на самом деле не нашел много документации по предмет. Я знаю, что padrino поставляется с предварительно созданным пакетом «Администратор», который включает в себя вход/аутентификацию пользователя и т. Д., Однако я бы предпочел создать свой собственный с нуля, а не пытаться настроить их решение в соответствии со своими потребностями.

Итак, мой вопрос: в Padrino, как бы я реализовал простую систему аутентификации на основе сеанса для входа в систему пользователей, установив данные сеанса после того, как комбинация пользователя/пароля была проверена в базе данных, извлекая эти данные сеанса, чтобы проверить, если пользователь входит в систему, когда делается запрос на защиту определенных страниц/ресурсов, использует данные сеанса для получения идентификатора/роли/и т. д. пользователя, а затем уничтожает этот сеанс, когда пользователь выходит из системы. Как PHP-программист, я привык использовать для этой цели $_SESSION superglobal, есть ли что-то похожее на это в padrino/ruby? Я заметил, что в app.rb есть enable :sessions, является ли :sessions эквивалентом пардрино?


person Bill Dami    schedule 18.04.2012    source источник


Ответы (1)


Ага,

session[:cart] = cart_id
Cart.find(session[:cart].to_i) if session[:cart].present?

В целях аутентификации вы можете избежать padrino-admin и встроенной аутентификации, используя более простой способ:

# in app.rb
use Rack::Auth::Basic, 'Restricted Area' do |username, password|
  user == 'admin' and password == 'pwd'
end

Если вам нужно немного больше контролировать свои сеансы/файлы cookie, вы можете использовать:

set :sessions,
  :key          => '__awesome_key',
  :secret       => 'awesome_password',
  :expire_after => 1.year
person DAddYE    schedule 18.04.2012
comment
Отлично, кажется, этого должно быть достаточно для моих нужд. Еще один быстрый вопрос (надеюсь); как управляется/изменяется истечение сеанса? - person Bill Dami; 18.04.2012
comment
Кажется, я не могу понять, как получить доступ к хэшу session из метода класса в пользовательском вспомогательном классе... есть ли способ сделать это? - person Bill Dami; 24.04.2012