Django Rest 框架中的基于会话的与令牌身份验证

     2023-02-25     93

关键词:

【中文标题】Django Rest 框架中的基于会话的与令牌身份验证【英文标题】:SessionBased vs Token Authentication in Django Rest Framework 【发布时间】:2021-05-10 23:02:03 【问题描述】:

DRF 文档 (https://www.django-rest-framework.org/api-guide/authentication/#authentication) 指出

令牌身份验证适用于客户端-服务器设置,例如 本机桌面和移动客户端。

会话身份验证适用于与您的网站在同一会话上下文中运行的 AJAX 客户端。

然而,大多数关于 Django Rest Framework 身份验证的教程和 *** 问题/答案都建议在大多数情况下使用令牌身份验证,即使是 web 应用程序也是如此。

我正在使用 Django/Django Rest Framework 作为后端,Angular 作为前端来实现一个 webapp。 我应该使用哪种身份验证方案? 各有什么优缺点?

【问题讨论】:

【参考方案1】:

基于会话的身份验证

在基于会话的身份验证中,服务器将在用户登录后为用户创建一个会话。会话 ID 然后存储在用户浏览器的 cookie 中。当用户保持登录状态时,cookie 将与每个后续请求一起发送。然后服务器可以将cookie中存储的会话ID与内存中存储的会话信息进行比较,以验证用户的身份并发送具有相应状态的响应!

基于令牌的身份验证

许多 Web 应用程序使用 JSON Web Token (JWT) 而不是会话进行身份验证。在基于令牌的应用程序中,服务器使用秘密创建 JWT 并将 JWT 发送到客户端。客户端存储 JWT(通常在本地存储中)并在每个请求的标头中包含 JWT。然后,服务器将使用来自客户端的每个请求验证 JWT 并发送响应。

这里最大的区别是用户的状态不存储在服务器上,因为状态存储在客户端的令牌中。出于可扩展性和移动设备身份验证等原因,大多数现代 Web 应用程序都使用 JWT 进行身份验证。

【讨论】:

如何使用 Django rest 框架来延长 JWT 会话令牌?

】如何使用Djangorest框架来延长JWT会话令牌?【英文标题】:HowdoIusetheDjangorestframeworktoprolongaJWTsessiontoken?【发布时间】:2021-11-2920:30:15【问题描述】:我将Django3.2与django.auth.contrib应用程序和djangorestframework-jwt==1.11.0一起使用。在收... 查看详情

Django Rest 框架令牌认证

】DjangoRest框架令牌认证【英文标题】:DjangoRestFrameworkTokenAuthentication【发布时间】:2013-01-2802:07:41【问题描述】:我已阅读DjangoRest框架指南并完成所有教程。一切似乎都有意义,并且按应有的方式工作。我得到了基本和会话身... 查看详情

django rest 框架身份验证

】djangorest框架身份验证【英文标题】:djangorestFrameworkauthentications【发布时间】:2013-06-2919:27:45【问题描述】:我已经使用djangorest框架开发了一个API,并使用了基于令牌的身份验证,现在我试图从单独的项目中使用它。我如何使... 查看详情

使用 Django Rest 框架进行 JWT 令牌身份验证

】使用DjangoRest框架进行JWT令牌身份验证【英文标题】:JWTTokenAuthenticationwithDjangoRestFramework【发布时间】:2018-12-1513:12:03【问题描述】:我在我的Django-Rest应用程序上使用reactnative前端进行令牌身份验证时遇到了一些问题。我一直... 查看详情

如何在 django rest 框架中验证 jwt 身份验证中的令牌

】如何在djangorest框架中验证jwt身份验证中的令牌【英文标题】:howtovalidatetokeninjwtauthenticationindjangorestframework【发布时间】:2021-10-2712:33:59【问题描述】:如何在SimpleJWT身份验证中验证JWT令牌。如果令牌访问令牌已过期,我需要... 查看详情

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

】Django+JSONWeb令牌+禁用基于会话的授权【英文标题】:Django+JSONwebtokens+disablingsession-basedauthorization【发布时间】:2016-10-2206:25:06【问题描述】:我目前正在开发一个Django项目,该项目想要替换和禁用Django的传统基于cookie的会话,... 查看详情

Django REST框架令牌认证AngularJS

】DjangoREST框架令牌认证AngularJS【英文标题】:DjangorestframeworktokenauthenticationAngularJS【发布时间】:2016-08-1221:06:30【问题描述】:我对Django和Token身份验证以及AngularJS相当陌生。到目前为止,我已经制作了Django后端和AngularJS前端。... 查看详情

Django rest 框架 jwt 令牌权限

】Djangorest框架jwt令牌权限【英文标题】:Djangorestframeworkjwttokenpermission【发布时间】:2018-11-1920:18:22【问题描述】:现在我用Djangorest-framework制作了一些API。我使用JWT进行令牌认证。此刻,我有一些关于令牌权限的问题。如何在Dj... 查看详情

令牌的有效期是多久? Django REST 框架

】令牌的有效期是多久?DjangoREST框架【英文标题】:howlongistokenvalid?DjangoRESTFramework【发布时间】:2014-05-2112:06:03【问题描述】:我正在使用DjangoRestFramework令牌认证机制。http://www.django-rest-framework.org/api-guide/authentication#tokenauthentic... 查看详情

如何使用迁移框架添加 Django REST 框架身份验证令牌

】如何使用迁移框架添加DjangoREST框架身份验证令牌【英文标题】:HowdoyouusethemigrationframeworktoaddDjangoRESTFrameworkAuthenticationTokens【发布时间】:2015-12-1919:52:53【问题描述】:我正在使用DjangoREST框架设置一个新的API,我需要向所有现... 查看详情

Django Rest 框架邮递员令牌认证

】DjangoRest框架邮递员令牌认证【英文标题】:DjangoRestFrameworkPostmanTokenAuthentication【发布时间】:2014-12-2408:55:17【问题描述】:我正在使用DjangoRestFramework令牌身份验证,如果我这样做curlhttp://localhost:8000/api/v1/users/?format=json-H\'Author... 查看详情

在 django rest 框架中使用令牌身份验证返回更多信息

】在djangorest框架中使用令牌身份验证返回更多信息【英文标题】:returningmoreinformationswithtokenauthenticationindjangorestframework【发布时间】:2021-10-1620:11:27【问题描述】:我已经为我的django项目实现了令牌认证。在POST请求后为用户生... 查看详情

django rest框架中的JWT身份验证

】djangorest框架中的JWT身份验证【英文标题】:JWTauthenticationindjangorestframework【发布时间】:2019-07-1114:18:43【问题描述】:我是django_rest_framework的新手,正在尝试实现JWT身份验证。但是有一个问题,但是我发送了由已发送的用户名... 查看详情

你如何在 django rest 框架中实现 CSRF 令牌?

】你如何在djangorest框架中实现CSRF令牌?【英文标题】:HowdoyouimplementCSRFtokensindjangorestframework?【发布时间】:2021-05-2014:25:37【问题描述】:我注意到,当使用django并且您发出发布请求时,例如使用表单,django要求您添加csrf令牌... 查看详情

Django rest框架登录后获取JWT令牌

】Djangorest框架登录后获取JWT令牌【英文标题】:GettingJWTtokenafterDjangorestframeworklogin【发布时间】:2017-01-2505:40:19【问题描述】:我不确定我是否理解正确。我正在使用DjangoRestFramework让用户登录(显然还有许多其他事情)。在我... 查看详情

Django rest 框架和跨源请求

】Djangorest框架和跨源请求【英文标题】:Djangorestframeworkandcrossoriginrequests【发布时间】:2017-05-2205:11:53【问题描述】:我尝试从javascript客户端发出一些请求,以使用Django休息框架构建休息api。对/api/test的所有GET请求都是公开的... 查看详情

Django REST 框架:令牌身份验证不适用于生产

】DjangoREST框架:令牌身份验证不适用于生产【英文标题】:DjangoRESTframework:TokenAuthenticationdoesn\'tworkonproduction【发布时间】:2019-07-1122:11:44【问题描述】:我正在使用DjangoREST框架创建API,并尝试将我的移动应用程序连接到WebAPI。... 查看详情

Django REST框架+ Angular项目上的令牌认证

】DjangoREST框架+Angular项目上的令牌认证【英文标题】:tokenauthenticationonDjangoRESTframework+Angularproject【发布时间】:2015-03-2513:30:20【问题描述】:我正在使用DRF和Angular,其客户端环境是移动设备。我发现了一个django-rest-auth包。我毫... 查看详情