Simplejwt返回带Token的用户信息

29 篇文章 0 订阅
12 篇文章 0 订阅

说明

接上篇:DjangoRestFramework中的simplejwt使用

为使客户端请求 Token 同时返回登录账户基本信息,作如下处理。

1. 创建 Serializer 文件

命名为 login_seri.py ,代码如下,继承自 Simplejwt 包的类。

from rest_framework_simplejwt.serializers import *

class TokenObtainPairSerializer(TokenObtainSerializer):
    @classmethod
    def get_token(cls, user):
        return RefreshToken.for_user(user)

    def validate(self, attrs):
        data = super().validate(attrs)

        refresh = self.get_token(self.user)
        cUser = User.objects.get(username=self.user)
        data['username'] = cUser.username
        data['mobile'] = cUser.mobile
        data['email'] = cUser.email
        data['is_admin'] = cUser.is_admin
        data['last_login'] = cUser.last_login

        if api_settings.UPDATE_LAST_LOGIN:
            update_last_login(None, self.user)

        return data

2. 创建 Views 文件

命令为 login.py

from rest_framework_simplejwt.views import *
from UserManagement.serializers import login_seri


class TokenObtainPairViewUM(TokenViewBase):
    """
    Takes a set of user credentials and returns an access and refresh JSON web
    token pair to prove the authentication of those credentials.
    """
    serializer_class = login_seri.TokenObtainPairSerializer


token_obtain_pair = TokenObtainPairViewUM.as_view()

3. 配置 urls.py

from UserManagement.views.login import TokenObtainPairViewUM

urlpatterns = [
   path("api/token/", TokenObtainPairViewUM.as_view(), name="token_obtain_pair"),
]

4. 测试

执行运行命令

E:\SweetYaya\MyProj01> python manage.py runserver

获取Token

打开 Postman 工具,设置如下

  • 选择 post 方式
  • 填写请求地址:http://127.0.0.1:8000/api/token/
  • 添加头信息 Content-Type: application/json
    在这里插入图片描述

.
.
.
.
.
.
桃花仙人种桃树,又摘桃花换酒钱_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值