django auth模块使用jwt进行登录不能更新last_login!

简介: 今天使用django自带的用户系统,进行jwt,重写了user模型,使用手机登录,于是就想用django自带的登录验证...哎,一切折腾都在于不熟悉

今天使用django自带的用户系统,进行jwt,重写了user模型,使用手机登录,于是就想用django自带的登录验证...

哎,一切折腾都在于不熟悉

如果想看如何重写自带的user模型,我下次再写篇文章吧,先挖个坑

好了,重写自带的登录验证,就跟别人不一样,由此我发现了django强迫症一处,按所有教程,django能增加除了用户名之前的登录的前提是字段统一,也就是说...

正常是username字段,post的表单得有username字段,而增加手机登录或者邮箱登录,字段还得是username...这一处十分恶心..

因为我重写了User模型,所以绑定的是手机号码字段,那我又想增加用户名的验证了,于是就有这样的代码

from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
from user.models import User
class UserBackend(ModelBackend):
    def authenticate(self,username=None, password=None, **kwargs):
        try:
            user = User.objects.get(Q(telephone=username) | Q(username=username))
        except User.DoesNotExist:  # 可以捕获除与程序退出sys.exit()相关之外的所有异常
            return None
        if user.check_password(password):
            return user
    def get_user(self, user_id):
        try:
            return User.objects.get(id=user_id)
        except User.DoesNotExist:
           return None

3582664819.png

调用成功,但真的难受的一逼..

于是我兴高采烈的去尝试,我发现....

只有login函数才能触发用户last_login的刷新,而login又基于session,除了后台我用到了,其他我用了jwt,鬼tm的...刷新用户登录时间

经过一番思考,我终于决定放弃自带验证,还不如自己手动写验证,这样...我还能让字段舒服一些。

我写了这么多,就是以防有人跟我一样走了这条路,浪费更多的时间...

尽管如此,我还是认识了Q的写法...

目录
相关文章
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
1104 0
|
监控 数据可视化 前端开发
基于python django的电商数据分析系统,包括大屏和登录
本文介绍了一个基于Python Django框架开发的电商数据分析系统,该系统具备大屏展示功能和用户登录机制,旨在帮助电商企业实时监控和分析销售数据,支持多维度数据分析和趋势预测。
539 0
基于python django的电商数据分析系统,包括大屏和登录
|
数据采集 存储 数据可视化
基于python django的智联招聘数据采集与分析系统,有登录注册,可自主选择采集内容
本文介绍了一个基于Python Django框架的智联招聘数据采集与分析系统,该系统具备登录注册功能,允许用户自主选择采集内容,并通过对数据的分析和可视化展示,帮助企业和招聘者优化招聘策略。
511 1
基于python django的智联招聘数据采集与分析系统,有登录注册,可自主选择采集内容
【Azure APIM】在APIM中实现JWT验证不通过时跳转到Azure登录页面
【Azure APIM】在APIM中实现JWT验证不通过时跳转到Azure登录页面
131 2
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
708 0
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
641 0
|
数据采集 数据可视化 前端开发
基于python django的当当网书籍数据采集与可视化分析,实现数据采集与可视化分析,有登录注册和后台管理
本文介绍了一个基于Python和Django框架的当当网书籍数据采集与可视化分析项目,该项目实现了数据采集、用户登录注册、后台管理,并利用数据清洗、分析和可视化技术在前端展示分析结果。
481 0
基于python django的当当网书籍数据采集与可视化分析,实现数据采集与可视化分析,有登录注册和后台管理
|
前端开发 数据库 数据安全/隐私保护
Django入门到放弃之Auth模块
Django入门到放弃之Auth模块
|
数据库 数据安全/隐私保护 Python
django 快速实现完整登录系统
django 快速实现完整登录系统
|
JSON API 数据安全/隐私保护
Django 后端架构开发:JWT 项目实践与Drf版本控制
Django 后端架构开发:JWT 项目实践与Drf版本控制
605 0