这遵循什么样的设计模式?

时间:2011-06-06 17:17:47

标签: security design-patterns

在我的网络应用中,我要求用户在闲置五分钟后重新输入密码,类似于sudo在Linux上的工作方式。他们的密码用于解密信息。

FWIW,该应用程序使用ExtJS进行大量Javascript和AJAX驱动,就像桌面应用程序一样。

所以,我已经构建了一个类,它根据输入的密码提供对解密密钥的访问。该课程在五分钟后到期。

我的问题是:这样做的设计模式比'Sentry'更好的名字?我正在尝试恰当地命名我的课程。这是迄今为止的课程:

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 个答案:

答案 0 :(得分:1)

它看起来与此安全设计模式中描述的可撤销访问器类似:"The Lazy Programmer's Guide to Secure Computing"

也许称它为即将到期的访问者。