如何在Django中存储用于重置密码的活动日志?

时间:2020-06-17 14:03:59

标签: django logging django-views

在我的系统中,我想跟踪所有用户的登录/注销活动,但是在保存用户密码重置活动的日志时卡住了。

如何在UserActivity模型中存储此用户活动?

有什么建议吗?

如何在密码重置成功视图中获取用户电子邮件?

模型

class UserActivity(models.Model):  
    change_message = models.CharField(max_length=255)
    ip = models.GenericIPAddressField(null=True)
    user = models.CharField(max_length=255, blank=True, null=True)
    action_time = models.DateTimeField(auto_now_add=True)


    @receiver(user_logged_in)
    def user_logged_in_callback(sender, request, user, **kwargs):
        ip = request.META.get('REMOTE_ADDR')
        UserActivity.objects.create(change_message='User Logged in', ip=ip, user=user.email)

    @receiver(user_logged_out)
    def user_logged_out_callback(sender, request, user, **kwargs):
        ip = request.META.get('REMOTE_ADDR')
        UserActivity.objects.create(change_message='User Logged out', ip=ip, user=user.email)

    @receiver(user_login_failed)
    def user_login_failed_callback(sender, request, credentials, **kwargs):
        ip = request.META.get('REMOTE_ADDR')
        UserActivity.objects.create(change_message='User Login Failed', ip=ip, user=credentials.get('email', None))

用于重置密码的网址

 path('password-reset/confirm/<uidb64>/<token>/',
         auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html',
                                                     success_url=reverse_lazy('users:password_reset_complete'),
                                                     form_class=PasswordResetConfirmForm),
         name='password_reset_confirm'),

    path('password-reset/complete/', views.PasswordResetSuccessView.as_view(), name='password_reset_complete')

视图

class PasswordResetSuccessView(View):
    template_name = 'users/password_reset_complete.html',

    def get(self, request):
        ip = request.META.get('REMOTE_ADDR')
        UserActivity.objects.create(change_message='An user resets the password', ip=ip, user = ? )

1 个答案:

答案 0 :(得分:0)

好吧,我通过从cust_id centers cluster_number 1 -0.1806 1 2 -0.3596 1 3 -0.7953 2 4 0.0781 .. 5 -0.5887 3 覆盖save()方法来解决此问题,并从SetPasswordForm中删除了逻辑。

如果有更好的方法,请告诉我

CompleteView