在我的网络应用中,我要求用户在闲置五分钟后重新输入密码,类似于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
答案 0 :(得分:1)
它看起来与此安全设计模式中描述的可撤销访问器类似:"The Lazy Programmer's Guide to Secure Computing"
也许称它为即将到期的访问者。