jwt_utils.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:wiggum 作者: qdqmedia 项目源码 文件源码
def create_jwt_payload(user, expiration_delta, issuer, version=None, **kwargs):
    timezone.activate(settings.TIME_ZONE)
    now = timezone.now()
    expiration_date = now + datetime.timedelta(seconds=expiration_delta)
    version = settings.JWT_VERSION if not version else version
    not_before = now - datetime.timedelta(
        seconds=settings.JWT_NBF_LEEWAY_SECONDS)

    payload = {
        "user": {
            "id": user.id,
            "username": user.username,
            "email": user.email,
            "first_name": user.first_name,
            "last_name": user.last_name,
        },
        # used jwt RFC claims
        # JWT expiration
        "exp": int(expiration_date.strftime("%s")),
        # Issuer of the token
        "iss": issuer,
        # Issued at
        "iat": int(now.strftime("%s")),
        # # Not before (dont use before)
        "nbf": int(not_before.strftime("%s")),
        # # Subject of the token
        # "sub":
        # # Audience of the token
        # "aud":
        # # JWT token id
        # "jti":
        # Version of the token
        "version": version,
    }

    # Only set the permissions on the jwt token if forcen on settings
    if settings.JWT_SET_PERMISSION_ON_TOKEN:
        payload["permission"] = list(
            user.project_permissions.values_list('key', flat=True))

    # Set extra args
    for k, v in kwargs.items():
        payload[k] = v

    return payload
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号