【发布时间】:2014-11-26 12:39:24
【问题描述】:
我有一个 Tastypie ModelResource 定义了按预期工作的各种端点。
我现在已将此ModelResource 配置为具有BasicAuthentication:
class Meta:
authentication = BasicAuthentication()
我通过 Django 管理界面定义了几个测试用户。
根据Django 1.7 Documentation,我创建了一个signals.py,在其中注册了几个测试信号:
from django.core.signals import request_finished
from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver
@receiver(user_logged_in)
def on_login(sender, request, user, **kwargs):
print('******* LOGIN DETECTED *********')
@receiver(request_finished)
def on_request_finished(sender, **kwargs):
print('******* REQUEST FINISHED *******')
这是我的AppConfig在apps.py中成功加载的:
from django.apps import AppConfig
class MyAppConfig(AppConfig):
name = 'myapp'
verbose_name = 'verbose description of myapp'
def ready(self):
import myapp.signals
我使用 Requests 库与我的 API 成功通信,为我的一位测试用户提供基本身份验证凭据:
auth = HTTPBasicAuth(username, getpass('Enter password: '))
response = requests.get(self.url(endpoint), auth=self.auth, params = params)
REQUEST FINISHED 打印显示在 Django 服务器的输出中,但 LOGIN DETECTED 没有。
在使用 Tastypie 时我们是否必须手动触发登录信号,或者使用除 BasicAuthentication 之外的其他一些内置/自定义 Authentication 类?换句话说,是否预计user_logged_in 信号不会自动触发?
任何信息将不胜感激。
【问题讨论】:
标签: django login request signals tastypie