python - 破解 Django 管理员,用于登录/注销的 Hook

标签 python django django-admin

如何向 Django Admin 添加 Hook ,以便在用户登录或注销时执行功能?

最佳答案

遗憾的是,Django 不会在该事件上发送任何信号....但您可以制作自己的自定义 AuthorizationBackend,使您能够这样做:

from django.dispatch import Signal

post_login = Signal(providing_args=['user'])

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User

class AuthSignalBackend(ModelBackend):
    def authenticate(self, username=None, password=None):
        try:
            user = User.objects.get(username=username)
            if user.check_password(password):
                post_login.send(sender=None, user=user)
                return user
        except User.DoesNotExist:
            return None


def login_handler(sender, **kwargs):
    print "logging in..."        
post_login.connect(login_handler)

要启用它,您必须将 AUTHENTICATION_BACKENDS = (myapp.mymodule.AuthSignalBackend',) 放入您的 settings.py 中!

关于python - 破解 Django 管理员,用于登录/注销的 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037558/

相关文章:

python - 在python中单独执行特定数据类型的任务

python - 如何从 Django 中的不同模型生成 feed?

python - 将自定义 JS 添加到 Django 管理字段

python - “ListSerializer”对象不可调用

python - GPU 上的 PyTorch Slow Batch 矩阵乘法

javascript - TinyMCE:格式化我的tinymce编辑器会杀死django功能

django - Django URL和过滤,实现此目标的正确方法

django - has_delete_permission 在 django admin inline 中获取父实例

django - 在 Django Admin 中,如何禁用删除链接

Python Django REST 调用返回对象编号而不是对象名称