REST framework JWT Auth 【翻译版】

Julia API工程化:类型驱动的高性能Web服务实践 API开发本质上是将请求语义可靠地映射为业务逻辑的过程。传统框架依赖运行时校验与动态类型,导致错误滞后、文档脱节、测试脆弱;而Julia凭借其特化的类型系统、编译期宏展开和零成本抽象能力,实现了从‘字符串解析’到‘类型流’的范式升级。通过UserRegistration等自定义类型约束输入、AuthenticatedRequest封装认证上下文、@route宏同步生成OpenAPI规范,Julia让API契约在代码编写阶段即固化,大幅提升可维护性与协作效率。这种类型即契约、编译即校验的设计思想,正成为科学计 阅读详情

REST framework JWT Auth

JSON Web Token Authentication support for Django REST Framework

【对Django REST框架的JSON Web令牌身份验证支持】


Overview

This package provides JSON Web Token Authentication support for Django REST framework.

If you want to know more about JWT, check out the following resources:

【这个包为Django REST框架提供JSON Web令牌身份验证支持。

如果您想更多地了解JWT,请查看以下参考资料:】

Requirements【 要求】

  • Python (2.7, 3.3, 3.4, 3.5)
  • Django (1.8, 1.9, 1.10)
  • Django REST Framework (3.0, 3.1, 3.2, 3.3, 3.4, 3.5)

Security【安全】

Unlike some more typical uses of JWTs, this module only generates authentication tokens that will verify the user who is requesting one of your DRF protected API resources. The actual request parameters themselves are not included in the JWT claims which means they are not signed and may be tampered with. You should only expose your API endpoints over SSL/TLS to protect against content tampering and certain kinds of replay attacks.

【与一些更典型的JWTs使用不同,这个模块只生成身份验证令牌,用于验证请求DRF受保护的API资源的用户。JWT声明中没有包含实际的请求参数本身,这意味着它们没有签名,可能会被篡改。您应该只在SSL/TLS上公开API端点,以防止内容篡改和某些类型的重播攻击。】

Installation【安装】

Install using pip…

$ pip install djangorestframework-jwt

Usage【使用】

In your settings.py, add JSONWebTokenAuthentication to Django REST framework’s DEFAULT_AUTHENTICATION_CLASSES.

【在你的设置。py,将JSONWebTokenAuthentication添加到Django REST框架的DEFAULT_AUTHENTICATION_CLASSES中。】

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

In your urls.py add the following URL route to enable obtaining a token via a POST included the user’s username and password.

【py在URL .py中添加以下URL路由,以允许通过包含用户用户名和密码的POST获取令牌。】

from rest_framework_jwt.views import obtain_jwt_token
#...

urlpatterns = [
    '',
    # ...

    url(r'^api-token-auth/', obtain_jwt_token),
]

You can easily test if the endpoint is working by doing the following in your terminal, if you had a user created with the username admin and password password123.

【如果您的用户名是admin,密码是password123,那么您可以通过在终端中执行以下操作轻松地测试端点是否工作。】

$ curl -X POST -d "username=admin&password=password123" http://localhost:8000/api-token-auth/

Alternatively, you can use all the content types supported by the Django REST framework to obtain the auth token. For example:

【或者,您可以使用Django REST框架支持的所有内容类型来获得认证令牌。例如:】

$ curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"password123"}' http://localhost:8000/api-token-auth/

Now in order to access protected api urls you must include the Authorization: JWT <your_token> header.

【现在,为了访问受保护的api url,您必须包含授权:JWT <your_token> header。】

$ curl -H "Authorization: JWT <your_token>" http://localhost:8000/protected-url/

Refresh Token【刷新令牌】

If JWT_ALLOW_REFRESH is True, non-expired tokens can be “refreshed” to obtain a brand new token with renewed expiration time. Add a URL pattern like this:

【如果JWT_ALLOW_REFRESH为真,则可以“刷新”未过期的令牌,以获得具有更新过期时间的全新令牌。添加这样的URL模式:】

    from rest_framework_jwt.views import refresh_jwt_token
    #  ...

    urlpatterns = [
        #  ...
        url(r'^api-token-refresh/', refresh_jwt_token),
    ]

Pass in an existing token to the refresh endpoint as follows: {"token": EXISTING_TOKEN}. Note that only non-expired tokens will work. The JSON response looks the same as the normal obtain token endpoint {"token": NEW_TOKEN}.

【将一个现有的令牌传递给刷新端点,如下所示:{“token”: EXISTING_TOKEN}。请注意,只有未过期的令牌才能工作。JSON响应看起来与普通的获取令牌端点{“token”:NEW_TOKEN}相同。】

$ curl -X POST -H "Content-Type: application/json" -d '{"token":"<EXISTING_TOKEN>"}' http://localhost:8000/api-token-refresh/

Refresh with tokens can be repeated (token1 -> token2 -> token3), but this chain of token stores the time that the original token (obtained with username/password credentials), as orig_iat. You can only keep refreshing tokens up to JWT_REFRESH_EXPIRATION_DELTA.

【可以重复使用令牌进行刷新(令牌1 ->令牌2 ->令牌3),但是这个令牌链将原始令牌(通过用户名/密码凭证获得)的时间存储为orig_iat。您只能将刷新令牌保持到JWT_REFRESH_EXPIRATION_DELTA。】

A typical use case might be a web app where you’d like to keep the user “logged in” the site without having to re-enter their password, or get kicked out by surprise before their token expired. Imagine they had a 1-hour token and are just at the last minute while they’re still doing something. With mobile you could perhaps store the username/password to get a new token, but this is not a great idea in a browser. Each time the user loads the page, you can check if there is an existing non-expired token and if it’s close to being expired, refresh it to extend their session. In other words, if a user is actively using your site, they can keep their “session” alive.

【典型的用例可能是web应用程序,您希望让用户“登录”站点,而不需要重新输入密码,或者在令牌过期之前被意外踢出站点。假设他们有一个1小时的令牌,并且在最后一刻还在做某事。使用移动设备,您也许可以存储用户名/密码以获得新的令牌,但在浏览器中这不是一个好主意。每次用户加载页面时,您可以检查是否存在现有的未过期令牌,如果该令牌接近过期,则刷新该令牌以扩展其会话。换句话说,如果用户正在积极使用您的站点,他们可以保持其“会话”活动。】

Verify Token【验证令牌】

In some microservice architectures, authentication is handled by a single service. Other services delegate the responsibility of confirming that a user is logged in to this authentication service. This usually means that a service will pass a JWT received from the user to the authentication service, and wait for a confirmation that the JWT is valid before returning protected resources to the user.

【在一些微服务体系结构中,身份验证由单个服务处理。其他服务委托确认用户登录到此身份验证服务的责任。这通常意味着服务将从用户接收到的JWT传递给身份验证服务,并在将受保护的资源返回给用户之前等待JWT有效的确认。】

This setup is supported in this package using a verification endpoint. Add the following URL pattern:

【此包使用验证端点支持此设置。添加以下URL模式:】

    from rest_framework_jwt.views import verify_jwt_token

    #...

    urlpatterns = [
        #  ...
        url(r'^api-token-verify/', verify_jwt_token),
    ]

Passing a token to the verification endpoint will return a 200 response and the token if it is valid. Otherwise, it will return a 400 Bad Request as well as an error identifying why the token was invalid.

【将一个令牌传递给验证端点将返回一个200响应,如果该令牌有效,则返回该令牌。否则,它将返回一个400错误的请求以及一个错误,该错误标识令牌无效的原因。】

$ curl -X POST -H "Content-Type: application/json" -d '{"token":"<EXISTING_TOKEN>"}' http://localhost:8000/api-token-verify/

Additional Settings【附加的设置】

There are some additional settings that you can override similar to how you’d do it with Django REST framework itself. Here are all the available defaults.

【还有一些额外的设置可以覆盖,类似于使用Django REST框架本身所做的设置。以下是所有可用的默认值。】

JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
    'rest_framework_jwt.utils.jwt_encode_handler',

    'JWT_DECODE_HANDLER':
    'rest_framework_jwt.utils.jwt_decode_handler',

    'JWT_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_payload_handler',

    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
    'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_response_payload_handler',

    'JWT_SECRET_KEY': settings.SECRET_KEY,
    'JWT_GET_USER_SECRET_KEY': None,
    'JWT_PUBLIC_KEY': None,
    'JWT_PRIVATE_KEY': None,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,

    'JWT_ALLOW_REFRESH': False,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),

    'JWT_AUTH_HEADER_PREFIX': 'JWT',
    'JWT_AUTH_COOKIE': None,

}

This packages uses the JSON Web Token Python implementation, PyJWT and allows to modify some of it’s available options.

【这个包使用JSON Web Token Python实现PyJWT,并允许修改它的一些可用选项。】

JWT_SECRET_KEY【JWT密钥】

This is the secret key used to sign the JWT. Make sure this is safe and not shared or public.

Default is your project’s settings.SECRET_KEY.

【这是用于签署JWT的密钥。确保这是安全的,不被共享或公开。

默认值是项目的settings.SECRET_KEY。】

JWT_GET_USER_SECRET_KEY【JWT获取用户密钥】

This is more robust version of JWT_SECRET_KEY. It is defined per User, so in case token is compromised it can be easily changed by owner. Changing this value will make all tokens for given user unusable. Value should be a function, accepting user as only parameter and returning it’s secret key.

Default is None.

【这是JWT_SECRET_KEY的更健壮版本。它是为每个用户定义的,因此如果令牌受到损害,可以很容易地由所有者进行更改。更改此值将使给定用户的所有令牌不可用。值应该是一个函数,只接受user作为参数并返回它的secret key。

默认是没有的。】

JWT_PUBLIC_KEY【JWT公钥】

This is an object of type cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey. It will be used to verify the signature of the incoming JWT. Will override JWT_SECRET_KEY when set. Read the documentation for more details. Please note that JWT_ALGORITHMmust be set to one of RS256, RS384, or RS512.

Default is None.

【这是一个类型为cryptography.hazmat. elements .asymmetric.rsa. rsapublickey的对象。它将用于验证传入JWT的签名。将在设置时覆盖JWT_SECRET_KEY。请注意,JWT_ALGORITHMmust被设置为RS256、RS384或RS512之一。

默认是没有的。】

JWT_PRIVATE_KEY【JWT私钥】

This is an object of type cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey. It will be used to sign the signature component of the JWT. Will override JWT_SECRET_KEY when set. Read the documentation for more details. Please note that JWT_ALGORITHM must be set to one of RS256, RS384, or RS512.

Default is None.

【这是一个类型为cryptography.hazmat. elements .asymmetric.rsa. rsaprivatekey的对象。它将用于对JWT的签名组件进行签名。将在设置时覆盖JWT_SECRET_KEY。请注意,JWT_ALGORITHM必须设置为RS256、RS384或RS512之一。

默认是没有的。】

JWT_ALGORITHM【JWT算法】

Possible values are any of the supported algorithms for cryptographic signing in PyJWT.

Default is "HS256".

【可能的值是PyJWT中支持的任何加密签名算法。

默认设置是“HS256”。】

JWT_VERIFY【JWT验证】

If the secret is wrong, it will raise a jwt.DecodeError telling you as such. You can still get at the payload by setting the JWT_VERIFY to False.

Default is True.

【如果这个秘密是错误的,它将产生一个jwt。DecodeError是这样告诉你的。您仍然可以通过将JWT_VERIFY设置为False来获得有效负载。

默认是正确的。】

JWT_VERIFY_EXPIRATION【JWT核实过期】

You can turn off expiration time verification by setting JWT_VERIFY_EXPIRATION to False. Without expiration verification, JWTs will last forever meaning a leaked token could be used by an attacker indefinitely.

Default is True.

【您可以通过将JWT_VERIFY_EXPIRATION设置为False来关闭过期时间验证。如果没有过期验证,JWTs将永远存在,这意味着泄漏的令牌可能会被攻击者无限期地使用。

默认是正确的。】

JWT_LEEWAY【JWT余地】

This allows you to validate an expiration time which is in the past but not very far. For example, if you have a JWT payload with an expiration time set to 30 seconds after creation but you know that sometimes you will process it after 30 seconds, you can set a leeway of 10 seconds in order to have some margin.

Default is 0 seconds.

【这允许您验证过期时间,这是在过去,但不是很远。例如,如果您有一个JWT有效负载,它的过期时间设置为创建后30秒,但是您知道有时您将在30秒后处理它,那么您可以设置10秒的回旋余地以获得一些余量。

默认是0秒。】

JWT_EXPIRATION_DELTA【JWT过期δ】

This is an instance of Python’s datetime.timedelta. This will be added to datetime.utcnow() to set the expiration time.

Default is datetime.timedelta(seconds=300)(5 minutes).

【这是Python的datetime.timedelta的一个实例。这将添加到datetime.utcnow()中以设置过期时间。

默认值是datetime.timedelta(秒=300)(5分钟)。】

JWT_AUDIENCE【JWT观众】

This is a string that will be checked against the aud field of the token, if present.

Default is None(fail if aud present on JWT).

【如果存在,将根据令牌的aud字段检查这个字符串。

无违约(若JWT上存在aud则失败)。】

JWT_ISSUER【JWT发行人】

This is a string that will be checked against the iss field of the token.

Default is None(do not check iss on JWT).

【这是一个字符串,将根据令牌的iss字段进行检查。

默认是None(不要在JWT上检查iss)。】

JWT_ALLOW_REFRESH【JWT允许刷新】

Enable token refresh functionality. Token issued from rest_framework_jwt.views.obtain_jwt_token will have an orig_iat field. Default is False

【启用令牌刷新功能。令牌由rest_framework_jwt.views发出。obtain_jwt_token将有一个orig_iat字段。默认的是假的】

JWT_REFRESH_EXPIRATION_DELTA【JWT刷新过期增量】

Limit on token refresh, is a datetime.timedelta instance. This is how much time after the original token that future tokens can be refreshed from.

Default is datetime.timedelta(days=7) (7 days).

【令牌刷新的限制是一个日期时间。timedelta实例。这是在原始令牌之后可以刷新未来令牌的时间。

默认值是datetime.timedelta(days=7)(7天)。】

JWT_PAYLOAD_HANDLER【JWT载荷处理程序】

Specify a custom function to generate the token payload

【指定一个自定义函数来生成令牌有效负载】

JWT_PAYLOAD_GET_USER_ID_HANDLER【JWT负载获取用户ID处理程序】

If you store user_id differently than the default payload handler does, implement this function to fetch user_id from the payload. Note: Will be deprecated in favor of JWT_PAYLOAD_GET_USERNAME_HANDLER.

【如果您存储user_id的方式与默认有效负载处理程序的方式不同,则实现此函数从有效负载获取user_id。注意:不赞成使用JWT_PAYLOAD_GET_USERNAME_HANDLER。】

JWT_PAYLOAD_GET_USERNAME_HANDLER【JWT负载获取用户名处理程序】

If you store username differently than the default payload handler does, implement this function to fetch username from the payload.

【如果您存储用户名的方式与默认有效负载处理程序的方式不同,则实现此函数从有效负载获取用户名。】

JWT_RESPONSE_PAYLOAD_HANDLER【JWT响应负载处理程序】

Responsible for controlling the response data returned after login or refresh. Override to return a custom response such as including the serialized representation of the User.

Defaults to return the JWT token.

Example:

【负责控制登录或刷新后返回的响应数据。覆盖以返回自定义响应,例如包含用户的序列化表示。

默认返回JWT令牌。

例子:】

def jwt_response_payload_handler(token, user=None, request=None):
    return {
        'token': token,
        'user': UserSerializer(user, context={'request': request}).data
    }

Default is {'token': token}

JWT_AUTH_HEADER_PREFIX【JWT验证头前缀】

You can modify the Authorization header value prefix that is required to be sent together with the token. The default value is JWT. This decision was introduced in PR #4 to allow using both this package and OAuth2 in DRF.

Another common value used for tokens and Authorization headers is Bearer.

Default is JWT.

【您可以修改与令牌一起发送的授权头值前缀。默认值是JWT。这个决定是在PR #4中引入的,它允许在DRF中同时使用这个包和OAuth2。

用于令牌和授权标头的另一个常见值是承载。

默认是JWT。】

JWT_AUTH_COOKIE【JWT AUTH饼干】

You can set this to a string if you want to use http cookies in addition to the Authorization header as a valid transport for the token. The string you set here will be used as the cookie name that will be set in the response headers when requesting a token. The token validation procedure will also look into this cookie, if set. The ‘Authorization’ header takes precedence if both the header and the cookie are present in the request.

Default is None and no cookie is set when creating tokens nor accepted when validating them.

【如果希望在授权头之外使用http cookie作为令牌的有效传输,可以将其设置为字符串。您在这里设置的字符串将用作请求令牌时在响应头中设置的cookie名称。如果设置了,令牌验证过程还将检查此cookie。如果请求中同时存在报头和cookie,则“授权”报头优先。

默认值是None,在创建令牌时没有设置cookie,在验证令牌时也没有设置cookie。】

Extending JSONWebTokenAuthentication【延长JSONWebTokenAuthentication】

Right now JSONWebTokenAuthentication assumes that the JWT will come in the header, or a cookie if configured (see JWT_AUTH_COOKIE). The JWT spec does not require this (see: Making a service Call). For example, the JWT may come in the querystring. The ability to send the JWT in the querystring is needed in cases where the user cannot set the header (for example the src element in HTML).

To achieve this functionality, the user might write a custom Authentication:

【现在,JSONWebTokenAuthentication假设JWT将出现在报头中,或者如果配置了cookie(请参见JWT_AUTH_COOKIE),那么将出现一个cookie。JWT规范不要求这样做(参见:进行服务调用)。例如,JWT可能在querystring中。在用户无法设置标题(例如HTML中的src元素)的情况下,需要在querystring中发送JWT的能力。

要实现此功能,用户可以编写自定义身份验证:】

class JSONWebTokenAuthenticationQS(BaseJSONWebTokenAuthentication):
    def get_jwt_value(self, request):
         return request.QUERY_PARAMS.get('jwt')

It is recommended to use BaseJSONWebTokenAuthentication, a new base class with no logic around parsing the HTTP headers.

【建议使用BaseJSONWebTokenAuthentication,这是一个新的基类,没有解析HTTP头的逻辑。】

Creating a new token manually【手动创建新令牌】

Sometimes you may want to manually generate a token, for example to return a token to the user immediately after account creation. You can do this as follows:

【有时您可能希望手动生成令牌,例如在帐户创建之后立即将令牌返回给用户。你可以这样做:】

from rest_framework_jwt.settings import api_settings

jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
Django认证最佳实践:django-allauth快速集成与安全配置 用户认证是Web应用的基础能力,涉及注册、登录、邮箱验证、密码重置及社交登录等核心流程。其底层原理依赖于会话管理、Token签名、OAuth2协议和安全边界控制(如CSRF防护、开放重定向拦截)。采用成熟方案可显著降低安全风险与开发成本,避免因SMTP明文认证漏洞、回调URL配置错误或会话固定等问题引发线上事故。典型应用场景包括SaaS平台、教育系统、政务审批系统等需快速交付且符合等保要求的项目。django-allauth作为Django生态最成熟的认证扩展,无缝兼容django.contrib.auth 阅读详情

相关推荐

Claude Code + GLM-5.2 构建本地化 Vibe Coding 开发工作流

Vibe Coding 是一种以意图驱动、可验证、可追溯的新型 AI 编程范式,其核心在于将自然语言开发需求转化为结构化工程动作。它依赖两大技术支柱:具备项目级代码图谱理解能力的智能调度器(如 Claude Code),以及擅长中文语境下多跳逻辑推理与强类型代码生成的基础模型(如 GLM-5.2)。相比通用 Copilot 或 Llama 方案,该组合在上下文感知补全、配置感知生成、中文技术文档理解及逻辑链完整性上具有显著工程优势。典型应用场景包括遗留系统重构、微服务快速搭建、技术文档同步生成示例代码等。本

cuankuangzhong6373的博客 1727

Vue与Django REST framework全栈开发实战指南

在现代Web开发中,前后端分离架构已成为主流技术范式。Vue.js作为渐进式前端框架,通过响应式数据绑定和组件化体系,为开发者提供了高效的UI构建能力。Django REST framework则是基于Python的REST API框架,其核心机制包括序列化器、视图集和路由配置,能够快速构建健壮的后端服务。这两种技术的结合,既能实现前端的高交互体验,又能确保后端数据处理的安全性和扩展性。特别是在构建博客平台、内容管理系统等中大型项目时,这种技术组合展现出显著优势。通过JSON数据格式进行通信,前后端可以完全

java2000.net 295

一种导弹追踪算法的MATLAB仿真实现

以下是一个用于模拟机动变轨导弹和防空导弹追踪过程的 MATLAB 代码,同时会提供 3D 效果展示。你可以运行这段代码,从而观察机动变轨导弹和防空导弹的速度与位置变化。

SmartGridequation的博客 935

如何开发rest接口服务_好未来开源框架 gozero:如何用它进行 rest 开发?

点击上方蓝色“polarisxu”关注我,设个星标,不会让你失望go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,其中 rest 是 web 框架模块,基于 Go 语言原生的 http 包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的 web 框架。服务创建go-zero 中创建 http 服务非常简单,官方推荐使用goctl[1]工具来生成。为了方便演示,...

weixin_39586915的博客 765

74HC138译码器的原理和使用

A0,A1,A2为3位二进制加权地址输入端口,A2A1A0顺序组成的3位2进制数对应的十进制数x控制使能端口Yx';例如当A2A1A0 = 101 时,其他门输出端全为高电平,只有Y5'为低电平。 Y0-Y7为8个输出端口,其输出电平由A0,A2,A3,E1,E2,E3决定。

diksan的博客 6万+

深入Linux内核:PTP硬件时间戳(HW Timestamp)是如何炼成的?

本文深入探讨了Linux内核中PTP硬件时间戳(HW Timestamp)的实现原理与实战应用。通过分析IEEE 1588协议在网络时间同步中的关键作用,详细解析了硬件时间戳在Linux内核中的架构设计、驱动开发及性能优化技巧,帮助开发者实现纳秒级精度的时间同步。

weixin_30727835的博客 651

JWT-auth的原理以及laravel中tymon/jwt-auth的安装使用

引言 最近后端准备用laravel来编写一个微信小程序的后端,那么首先涉及到的就是用户登录授权访问后端api的逻辑实现,之前还自己封装点token验证的类来处理登录状态,但是一接触laravel,就知道了tymon/jwt-auth的鼎鼎大名。那就必须来探究和学习一下了。 一.JWT auth知识及原理 想在laravel中使用tymon/jwt-auth之前,有些概念我们必须要学习。下面我将用自己的语言来描述一下。 1.什么是所谓的token? 我们都知道http协议是无状态的协议,unstate,这

caozhennan824的博客 1万+

Mac用户解决WPS中的俄语显示红线问题(WPS添加外语拼写检查)

我所使用的WPS版本:AppleStore 下载的 MacOs版 3.3.0 首先,对于 在访达-应用程序中,找到WPS,右键-点击“显示包内容” 然后按照下图的索引目录(Contents\Resource\office6\dicts\spellcheck),最后进入一个叫“spellcheck”的文件夹 最后将下载好的字典包(例如上图中的 en_US就代表美式英语;ru_RU就代表俄语) 关于字典包资源下载,我在网上找到一个Google云盘,里面包含了法语,德语,西语,意大利语,葡萄牙.

qq_48159150的博客 7900

jwt-auth之三--Auth认证

说明:仍是按照文档 auth的认证, 一是判断登陆状态(auth),如未登陆则被拦截,然后转交给登陆模块,这需要一个中间件来完成。 二是管理登陆,即登陆逻辑login,登陆成功则发送给用户一个授权token;及logout退出登陆,销毁token;忘记密码forgetPassword;注册signUp等。这需要一个专门的控制器来完成,在这里编写自定义逻辑。 在这之前,请阅读文档,一些配置略过。 ...

yt_php的博客 6669

Langchain与Milvus集成中的pymilvus.exceptions.MilvusException: channel not found错误解析

本文深入解析了在Langchain与Milvus集成时常见的pymilvus.exceptions.MilvusException: channel not found错误。该错误通常由客户端配置错误、网络问题、服务端状态异常或版本不兼容导致。文章提供了从基础连通性测试到高级网络排查的完整故障排除指南,并针对本地Docker、远程服务器及Kubernetes等典型部署场景给出了具体解决方案,帮助开发者快速定位并修复这一连接层问题。

weixin_29229989的博客 217

uniapp - 解决真机调试报错 request:fail abort statusCode:-1 java.security.cert.CertPathValidatorException: Tr

uni-app,真机调试报错,app端平台,安卓Android,安卓App发布线上报错,打包后接口请求失效了,api接口报错,真机运行安卓app时接口不通且报错,request:failabortstatusCode:-1java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.,真机调试,苹果ios真机报错,Uniapp打包到app后报错,uni-app真机调试报错,服务器

🏆 前端领域优质创作者 1万+

探索 JWT-AUTH:一个强大且灵活的身份验证解决方案

探索 JWT-AUTH:一个强大且灵活的身份验证解决方案 项目简介 JWT-AUTH 是一个基于 JSON Web Tokens (JWT) 的身份验证库,由 Sloaix 开发并托管在 GitCode 上。这个项目旨在为开发者提供一种简单、安全的方式来管理用户的登录状态和授权信息,适用于各类 Web 应用和服务。通过使用 JWT,JWT-AUTH 可以帮助你构建无状态的应用,提高性能,并保持数据...

gitblog_00013的博客 643

RK3588 buildroot 双网口bonding调试

本文介绍了Rockchip Buildroot中配置网络冗余的方法,通过bonding技术将多个物理网口合并为逻辑接口。主要内容包括:1)7种常见bonding模式的特点及适用场景;2)RK3588的具体配置流程,包括内核配置(启用bonding驱动、修改dts)、添加ifenslave工具;3)系统编译和网络状态检查。

501846585_QQAndroid_java 460

auth2.0机制 以及jwt

具体来说,auth2.0一共分成四种授权类型 第一种是授权码模式,这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。比如A应用想要获取B应用的用户数据,A会首先访问B的授权页面,用户点击确认授权之后,B会请求A配置的回调地址,同时附带上授权码code,A可以通过这个code向B申请登录令牌access_token,获取到登录令牌之后,然后就可以向B应用请求用户信息数据

黑猫 6813

PostgreSQL的学习心得和知识总结(一百二十六)|深入理解PostgreSQL数据库SQL执行时间计算 \timing 和 log_duration的使用和原理

1、参考书籍:《PostgreSQL数据库内核分析》2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》3、

孤傲小二~阿沐的博客 986

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【翻译】REST framework JWT Auth

JWT认证的REST框架 原文链接 概述 这个包提供对Django REST framework的JSON Web Token 认证支持。 需要满足条件 Python (2.7, 3.3, 3.4, 3.5) Django (1.8, 1.9, 1.10) Django REST Framework (3.0, 3.1, 3.2, 3.3, 3.4, 3.5) 安全 与JWT的一些更典型的用法...

非马梦衢的博客 357

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Django Rest Framework的使用整理

Django Rest Framework 一、Rest Framework的基本介绍 程序的客户端有很多:硬件设备,游戏,APP,软件,其他的外部服务端。 1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 这种情况下,前端页面中会出现很多涉及到服务端的模板语法。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neat7OGD-1610381584965)(E:/Download/8-3

有用的话关个注,点个赞,收个藏🫶。 1509

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SaaS Boilerplate认证系统详解:用户注册、OAuth登录和双重验证完整实现

SaaS Boilerplate认证系统为企业级应用提供了一套完整、安全的用户身份验证解决方案,支持多种认证方式,包括传统的邮箱密码登录、OAuth单点登录以及双重验证等高级安全功能。这个开源SaaS脚手架帮助开发者快速构建安全可靠的认证系统,让企业能够专注于核心业务逻辑的开发。 ## 🔐 认证系统架构概览 SaaS Boilerplate采用现代化的认证架构,基于Django REST F

gitblog_00680的博客 413

实战指南:从零构建高性能RESTful API服务的最佳实践

在现代Web开发领域,API开发已成为前后端分离架构的核心支柱。随着微服务架构的兴起,设计规范、高效、安全的RESTful接口是每个后端开发者必须掌握的核心技能。本文将基于Python-100-Days项目中的实践经验,为你提供一套完整的Web服务构建方案,涵盖从基础概念到高级优化的全流程。 ## 一、为什么需要前后端分离架构? 传统单体应用将前端页面和后端逻辑耦合在一起,导致开发效率低下、维

gitblog_00558的博客 322

Django与Vue.js全栈开发实战:从API设计到部署的完整指南

在现代Web开发中,前后端分离架构已成为主流范式,其核心在于通过API实现数据交互与业务解耦。RESTful API作为这一架构的通信标准,定义了资源的表述性状态转移,使得前端应用与后端服务能够独立开发与部署。这种模式的技术价值在于提升了开发效率、增强了系统的可维护性与可扩展性。其典型应用场景涵盖了从内容管理系统到复杂的企业级SaaS平台。本文以构建一个用户文章管理系统为例,深入探讨了如何利用Django REST Framework(DRF)这一强大工具包高效构建符合规范的API,并详细阐述了如何与Vue

weixin_30357231的博客 307

ASP.NET开发心得

默认的表名是Entity类名的复数形式。set;set;set;set;

tlxamulet的博客 497

V4-Flash工程实战:真实工作流下的成本感知型AI编程

在现代软件工程中,大模型正从‘代码补全工具’演进为具备系统级理解能力的协同开发者。其核心价值体现在对真实工作流的深度适配——支持长上下文连贯交互、跨文件依赖分析、技术方案权衡推演,并天然融入DevOps约束(如OAuth2.0 token刷新、Redis缓存策略、Celery任务可靠性)。V4-Flash通过动态稀疏注意力、语义锚点缓存与工程术语原生理解,在速度、全局性与成本效率三方面实现突破,尤其适用于中等复杂度API服务构建、TDD自动化、架构决策验证等典型场景。本文基于JWT续期API的完整开发闭环,

weixin_33919950的博客 371

WebGoat2026年版本(全10个模块另附其他模块)通关教程

本文简要介绍了WebGoat安全测试平台的部署和使用方法。主要内容包括:1)环境配置(Java23+Maven3.9.11)和启动步骤;2)HTTP基础任务,通过BurpSuite抓包分析POST请求;3)HTTP代理任务,要求修改请求方法和添加特定头信息;4)开发者工具任务,使用控制台获取随机数和网络请求中的数值;5)CIA三要素测验题。文章提供了具体操作截图和Python请求示例,帮助读者完成各项安全测试任务,适合作为Web应用安全测试的实操参考手册。

csdnkazusa的博客 1367

GPT5.5+Codex工作流实战:重构AI编程生产力

AI编程助手已从单点补全工具演进为深度集成开发环境的智能协作者。其核心在于将大模型能力与本地项目上下文(如文件结构、Git历史、tsconfig配置)实时融合,实现从‘回答问题’到‘完成任务’的范式跃迁。关键技术支撑包括上下文感知中间件(Codex)、低延迟协作引擎(GPT5.5)及本地化服务网关架构,显著提升TypeScript/Next.js等现代前端工程的编码效率与代码质量。本文聚焦真实开发场景下的工作流重构——涵盖环境部署、VS Code高阶配置、CI/CD集成与自动化Code Review,尤其针

429

AI代码工具实战避坑指南:5大认知断层与提效真相

AI编程助手不是智能补全插件,而是需要深度协同的‘认知协作者’。其核心原理在于对自然语言需求的多层语义解析、上下文信号的精准提取、执行环境的严格对齐、生成结果的业务化验证,以及团队协作中的规范收敛。技术价值体现在将隐性工程经验(如Redis锁策略、JWT签发约束、错误码体系)转化为可复用的Prompt资产和自动化守卫规则。典型应用场景包括Django登录接口开发、跨服务埋点API生成、遗留系统重构等真实交付任务。本文基于6个项目、4类技术栈的实测数据,直击AI编码中需求翻译失真、上下文理解偏差、沙盒环境错配

weixin_34242509的博客 427

Plone可行性衰减分析:从企业级CMS到现代技术选型决策

内容管理系统(CMS)是数字基建的核心组件,其选型直接关系到开发效率、运维成本与业务响应速度。Plone作为基于Zope和ZODB的对象型CMS,曾以严谨的权限模型与内容安全机制著称,但其架构复杂性、Zope生态依赖及ZODB性能瓶颈,正导致实际项目中的人力成本激增与升级风险放大。随着Django和Wagtail等基于Python生态、遵循约定优于配置原则的框架普及,CMS技术价值重心已从‘功能完备性’转向‘交付可行性’——即能否在可控周期内完成开发、稳定运维并快速迭代。本文结合真实迁移案例与量化指标,解析

aoanping0730的博客 321
上一篇: mysql从5.5升级到5.7【ubuntu】
下一篇: 【原创】python打造自动聊天回复机器人
Python_anning
博客等级 码龄9年 1409粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值