Django的一次性认证(临时凭证)工具。
项目描述
django-ticketoffice 为Django提供了一次性认证(也称为临时凭证)工具。它允许您创建和管理允许用户在网站上执行一次操作的票证。例如,Django可以使用它来处理“密码重置”操作,用户使用临时令牌进行认证。
示例
将某些URL限制为具有有效邀请票证的访客
from django.conf.urls import patterns, url
from django_ticketoffice.decorators import invitation_required, stamp_invitation
@invitation_required(place=u'louvre', purpose=u'visit')
@stamp_invitation # Mark invitation as used right **after** view execution.
def visit_louvre(request):
ticket = request.cache['invitation'] # Set by `invitation_required`.
return u'Welcome to the Louvre museum {guest}'.format(
guest=ticket.data['first_name'])
urlpatterns = patterns('', url('^louvre$', visit_louvre, name='louvre'))
为该资源创建和发送票证
from django.utils.timezone import now
from django_ticketoffice.models import Ticket
ticket = Ticket(place=u'louvre', purpose=u'visit')
ticket.set_password(u'I love Paris') # Encrypted in database.
ticket.expiry_datetime = now() + timedelta(days=5) # Optional.
ticket.data = {'first_name': u'Léonard'} # Optional.
ticket.save()
credentials = {'uuid': ticket.uuid, 'password': u'I love Paris'}
visit_url = reverse('louvre') + '?' + urlencode(credentials)
django-ticketoffice 专注于认证。它不发送邀请电子邮件。您可以查看django-mail-factory关于发送电子邮件的信息。
项目状态
django-ticketoffice 目前是一个概念验证:它提供了创建票证并在视图中使用票证的基本功能。它(您可以使用它)可能缺少一些功能(欢迎提出想法),并且可能会发生相当大的变化(改进)。尽管如此,维护者将负责发布说明和迁移。