Django + JSON Web令牌+禁用基于会话的授权

Bud*_*gae 5 django django-authentication session-cookies django-rest-framework json-web-token

我目前正在开发一个Django项目,该项目希望替换和禁用Django基于cookie的传统会话,并用JSON Web令牌替换它,以作为对我网站上的用户进行用户身份验证的一种方式(``需要登录的用户身份验证''网站的一部分,而不仅仅是REST API)。

我希望在Web应用程序中使用JSON Web令牌的方式:登录页面将进行API调用并接收JSON Web令牌作为响应,并且JSON Web令牌将通过(本地存储,会话存储或cookie)进行存储。JSON Web令牌将在后续的HTTP请求(登录后)中传递到HTTP标头中,以便服务器知道我们是授权用户。

我看过的某些库是djangorestframework库。似乎可以保护有关网站API的某些URL(不是我想要的)。是否有任何库可以用Django Web令牌替换Django使用的常规“基于cookie的”会话,并且具有“基于cookie的”会话授权方案的正常功能(正常含义是“登录用户并注销用户可以在该网站以及Django的默认管理面板 ')如果是,我如何将该库与当前的Web应用程序集成以实现正常功能?

我还希望禁用传统的“基于cookie的”会话。如何完全禁用它,以便使用JSON Web令牌完成用户身份验证?

Ham*_*ami 2

只需使用 jwt 进行身份验证类即可。

JSON Web 令牌身份验证

JSON Web Token 是一个相当新的标准,可用于基于令牌的身份验证。与内置的 TokenAuthentication 方案不同,JWT Authentication 不需要使用数据库来验证令牌。Blimp 维护 djangorestframework-jwt 包,它提供 JWT 身份验证类以及客户端根据用户名和密码获取 JWT 的机制

还将默认身份验证类设置为 jwt 并确定 settings.py 中的设置,例如:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'oauth2_provider.ext.rest_framework.OAuth2Authentication',
)
Run Code Online (Sandbox Code Playgroud)

}