使用 django 和 AngularJS 使用 JWT 登录所需的装饰器

Posted

技术标签:

【中文标题】使用 django 和 AngularJS 使用 JWT 登录所需的装饰器【英文标题】:Login required decorator with JWT using django and AngularJS 【发布时间】:2018-01-08 04:46:14 【问题描述】:

我有一个使用 AngularJS、JWT 和 django 作为后端框架的项目。 JWT 用户身份验证工作正常。

同时我也在尝试

从我的角度服务发送 $http.get('/myview/') 发送到 django 中的 myview,用 login_required 装饰。

经过研究,我了解到它不应该工作,因为 request.session 未设置。

所以问题是我怎样才能允许仅从经过身份验证的用户获取此视图中的请求?

我有想法在 django 中创建自定义装饰器,它将检查将在我的 Angular 服务的 get/post 请求中发送的令牌,但我怀疑它是否会起作用。

【问题讨论】:

【参考方案1】:

我找到了解决方案。我不认为其余框架权限类也可以用作视图的装饰器。

from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated

@api_view(['GET'])
@permission_classes((IsAuthenticated, ))
def example_view(request, format=None):

http://www.django-rest-framework.org/api-guide/permissions/

【讨论】:

以上是关于使用 django 和 AngularJS 使用 JWT 登录所需的装饰器的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 angularjs 调用 django json 视图

如何使用 Django 和 AngularJS 创建 POST 请求(包括 CSRF 令牌)

使用 angularjs 进行 django-rest 分页

使用 Django 和 CORS 的 AngularJS 应用程序中的 cookie 消失了

如何使用 AngularJS(Django 框架)将值保存到数据库

Facebook Auth 与 AngularJS 和 Django REST 框架