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的写法...

目录
相关文章
|
3月前
|
存储 JSON JavaScript
前后端分离项目知识汇总(微信扫码登录,手机验证码登录,JWT)-1
前后端分离项目知识汇总(微信扫码登录,手机验证码登录,JWT)
67 0
|
2天前
|
安全 关系型数据库 MySQL
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
11 3
|
1月前
|
JSON 前端开发 Java
|
1月前
|
存储 JSON Java
spring boot3登录开发-1(整合jwt)
spring boot3登录开发-1(整合jwt)
59 1
|
2月前
|
存储 中间件 数据安全/隐私保护
Django教程第3章 | Web开发实战-登录
登录案例、Djiango中间件【2月更文挑战第23天】
53 2
Django教程第3章 | Web开发实战-登录
|
3月前
|
安全 Java 数据库
SpringSecurity+JWT前后端分离架构登录认证
在SpringSecurity实现前后端分离登录token认证详解_springsecurity前后端分离登录认证-CSDN博客基础上进行重构,实现前后端分离架构登录认证,基本思想相同,借鉴开源Gitee代码进行改造,具有更好的代码规范。
175 1
|
3月前
|
JSON 前端开发 安全
前后端分离项目知识汇总(微信扫码登录,手机验证码登录,JWT)-2
前后端分离项目知识汇总(微信扫码登录,手机验证码登录,JWT)
58 0
|
3月前
|
Python
百度搜索:蓝易云【Django自带的Admin后台中如何获取当前登录用户】
在上面的代码中,`@staff_member_required`装饰器确保只有管理员可以访问 `my_custom_view`视图,而 `@login_required`装饰器确保只有登录的用户可以访问该视图。然后,可以使用 `request.user.username`获取当前登录用户的用户名,并将其传递到模板中进行显示或其他操作。
33 3
|
3月前
|
存储 JSON 算法
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
|
4月前
|
存储 缓存 NoSQL
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享