【问题标题】:Django Token based authentication using PyJWT , issue with verification of token使用 PyJWT 基于 Django 令牌的身份验证,令牌验证问题
【发布时间】:2015-10-07 23:51:59
【问题描述】:

我正在 Python Django 中实现基于令牌的身份验证,因此我遵循基于令牌的身份验证步骤,如下所述:

在基于令牌的身份验证中,不会使用 cookie 和会话。 令牌将用于对用户的每个请求进行身份验证 服务器。让我们用基于令牌的方式重新设计第一个场景 身份验证。

它将使用以下控制流程:

  1. 用户在登录表单中提供用户名和密码,然后点击登录。
  2. 发出请求后,通过在数据库中查询来验证后端的用户。如果请求有效,则通过 使用从数据库中获取的用户信息,然后返回 该信息在响应标头中,以便我们可以存储令牌 本地存储中的浏览器。
  3. 在每个请求标头中提供令牌信息,以访问应用程序中的受限端点。
  4. 如果从请求头信息中获取的token有效,则让用户访问指定的端点,并以JSON或 XML。

我已经完成了上面列出的前两个步骤。我需要继续第 3 步和第 4 步。因此,我正在编写一个 Django 装饰器来为我们完成任务。

但是,在身份验证步骤之后,我有点卡住了。

这里是将teacher_idtoken 发送到服务器的AngularJS 代码:

get_teacher_profile : function(teacher_id,token) {

    $http.defaults.headers.common['Authorization'] = 'Token ' + token;

    return $http.get("http://127.0.0.1:8000/user_manager/teacher/" + teacher_id + '/' + token)
                .then(function(response) {
                    if (typeof response.data === 'object') {
                        return response.data;
                    } else { return "Error"; }
                }, function(error) {
                    return null;
                });
},

根据 Django rest 框架,这里是在 urls.py 中指定的路由器:

router.register(r'teacher', view.TeacherViewSet)

...这里是TeacherViewSet 类:

class TeacherViewSet(viewsets.ModelViewSet):
    queryset = Teacher.objects.all()
    serializer_class = Teacher_Serializer

现在我需要验证TeacherViewSet 中的令牌。我尝试了一些装饰器,但我无法访问我在TeacherViewSet 的标头中设置的令牌。我正在使用 PyJWT 进行基于令牌的身份验证。如果有人以前遇到过这种情况,请告诉我。

【问题讨论】:

标签: angularjs django django-rest-framework jwt


【解决方案1】:

请查看:

http://getblimp.github.io/django-rest-framework-jwt/#rest-framework-jwt-auth

这将在处理 django-rest-framework 时为您处理 JWT 支持。

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2011-06-28
    • 2015-10-14
    • 2021-01-25
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多