Tracking User Login Activity in Django Rest Framework

django如何记录登录事件?

开发REST API首选为Python/Django的Django REST Framework(DRF),DRF提供多种认证机制:

  • Basic Authentication
  • Token Authentication
  • Session Authentication

Client-Server模式下常用的为token-based authentication
了解详情

Json Web Token(JWT) Authentication是最近兴起的token-based Authentication新标准,JWT不需要在数据库中存储token,了解详情

django-rest-framework-jwt又是在django中实现jwt的非常方便的插件。
了解详情

但是,当需要记录login event的时候,jwt本身实现不了,最好的方法是结合Signals来做。

为什么jwt本身实现不了呢?

  • 需要记录的login event为登录成功和登录失败;
  • 登录成功的signal为user_logged_in,登录失败的signal为user_login_fail
  • user_loggined_indjango.contrib.authlogin()负责;
  • user_login_faildjango.contrib.authauthenticate()负责;
  • DRF只调用authentication()函数,因此登录成功的信号无法发出。

所以,需要主动发user_logged_in信号


原因讲清楚了,详细解决方案参照via

0%