一个HTTP referer凭据插件。
项目描述
一个使用HTTP referer头来提供凭据的包。
详细文档
HTTP-Referer凭据
有时需要根据用户来源的网站来限制对网站的访问。例如,用户只能在来自公司网络时进入网站。如果两个网站无法共享任何特定信息,如身份验证令牌,那么唯一有用的信息就是HTTP-Referer请求头。
__注意__:我知道这并不完全安全,有人可能会伪造头。但在这种特定应用中是可以接受的。我想这可以阻止那些诚实的人。是的,这是一个真实世界的场景——否则我会实现这个包吗?:-)
让我们先看看凭据插件
>>> from z3c.referercredentials import credentials >>> creds = credentials.HTTPRefererCredentials()
让我们先看看正面情况。referer凭据插件有一个属性指定所有允许的主机
>>> creds.allowedHosts ('localhost',)
在这个例子中,我们只想允许来自www.zope.org的用户访问网站。
>>> creds.allowedHosts = ('www.zope.org',)
现在,来自该网站的用户将有一个包含此referer的请求
>>> from zope.publisher.browser import TestRequest >>> request = TestRequest(HTTP_REFERER='http://www.zope.org/index.html')
凭据现在可以按以下方式提取
>>> creds.extractCredentials(request)
没有返回任何内容。这是因为我们没有定义任何代表“referer用户”的凭据。通过设置凭据,它应该可以工作
>>> creds.credentials = {'login': 'mgr', 'password': 'mgrpw'} >>> creds.extractCredentials(request) {'login': 'mgr', 'password': 'mgrpw'}
一旦传递了可接受的引用者,凭据总是被返回
>>> del request._environ['HTTP_REFERER'] >>> creds.extractCredentials(request) {'login': 'mgr', 'password': 'mgrpw'}
我们必须登出才能丢失凭据
>>> creds.logout(request) True
现在,在不发送正确的引用者时,不会返回凭据
>>> creds.extractCredentials(request)
当用户无法验证时,插件会被要求提出挑战
>>> creds.challenge(request) True >>> request.response.getHeader('Redirect')
默认情况下,我们在网站上获取“unauthorized.html”视图。但您可以更改视图名称
>>> creds.challengeView = 'challenge.html' >>> creds.challenge(request) True >>> request.response.getHeader('Redirect')
最后说明:当然,此凭据插件仅适用于基于HTTP的请求
>>> request = object()>>> creds.extractCredentials(request)>>> creds.challenge(request) False>>> creds.logout(request) False
变更
版本 0.1.0(2007年6月??日)
初始发布
实现HTTP-Referer凭据插件
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
z3c.referercredentials-0.1.0.tar.gz (7.6 KB 查看散列)
构建分发
z3c.referercredentials-0.1.0-py2.4.egg (11.6 KB 查看散列)