Какой шаблон дизайна это следует? - PullRequest
0 голосов
/ 06 июня 2011

В моем веб-приложении я требую, чтобы пользователи повторно вводили свой пароль после пяти минут бездействия, аналогично тому, как sudo работает в Linux.Их пароль используется для расшифровки информации.

FWIW, приложение в значительной степени основано на Javascript и AJAX, как и настольное приложение, использующее ExtJS.

Итак, я создал класс, которыйобеспечивает доступ к ключу расшифровки на основе пароля, который они вводят.Этот класс истекает ключ через пять минут.

Мой вопрос: какой шаблон проектирования следует за или , что было бы лучшим именем, чем 'Sentry'? IЯ пытаюсь назвать свой класс соответствующим образом.Вот класс на данный момент:

class SecureResourceSentry
  include Singleton

  def initialize
    # Set a default number of seconds for access to expire.
    set_access_expiration_interval(300)

    @key = nil
    @time_last_accessed = 0
  end

  def set_access_expiration_interval(seconds)
    @access_expiration_interval = seconds
  end

  def set_raw_key(raw_key)
    @key = Digest::SHA256.hexdigest(raw_key)
  end

  def getKey
    if @key.nil?
      raise SecureResourceError, 'No key has been set.'
    end

    if access_is_expired
      @key = nil
      raise SecureResourceError, 'Access has expired.'
    end

    return @key
  end

  private
    def access_is_expired
      return Time.now.to_i - @time_last_accessed > @access_expiration_interval
    end
end

1 Ответ

1 голос
/ 06 июня 2011

Это похоже на отзывной аксессор, описанный в этой статье о безопасных шаблонах проектирования: «Руководство для ленивых программистов по безопасным вычислениям»

Возможно, назовите его истекающим аксессором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...