【问题标题】:How to get user info after successful authentication with django-rest-framework-jwt in angularjs如何在angularjs中使用django-rest-framework-jwt成功认证后获取用户信息
【发布时间】:2016-06-10 12:36:46
【问题描述】:

我正在使用 django 和 angularjs 开发一个项目,我需要使用 djangorestframework-jwt 进行身份验证。我是 djangorestframework-jwt 的新手。我使用 '/api-token-auth/' 登录,但我没有得到任何用户信息。

我的身份验证服务是:

function login (username, password, callback) {
        return $http.post('/api-token-auth/', {
            username: username, password: password
        }).then(loginSuccessFn(callback), loginErrorFn);

        function loginSuccessFn (callback) {
            return function (data, status, headers, config, response) {
                localStorage.setItem('empee.token',data.data.token);
                $http.defaults.headers.common['Authorization'] = 'Bearer ' + data.data.token;
                if (typeof callback !== 'undefined') {
                    callback();
                }
            }

        }

        function loginErrorFn (data, status, headers, config) {
            console.error('Epic failure!');
        }
    }

登录控制器:

function login() {
        Authentication.login(vm.username, vm.password, function() {
            $state.go('dashboard');
        });
    }

【问题讨论】:

  • 你说你解决了这个问题。解决方案是什么?假设接受的解决方案不是您的做法。

标签: angularjs django authentication django-rest-framework


【解决方案1】:

考虑到您在 Django-rest-framework 中公开了用户 URL,您可以执行 $http.get。

$http.get('/user-url/'+userid).then(function(response){
    if(response.status === 200){
        user_obj = response.data;
    }
});

要获取 userId,您只需要用户 angular-jwt

userid = jwtHelper.decodeToken(token).user_id;

【讨论】:

  • 感谢您的回答。我阅读了 angular-jwt 文档,但不明白我是如何使用它的。能不能给个例子或者详细解释一下。
  • 我得到了答案。再次感谢。
  • 这是说没有办法从 django-rest-framework-jwt 获取用户?是否需要另一个应用来获取用户 ID?
  • 我知道这有点矫枉过正。但我找不到其他方法。
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2021-09-08
  • 2019-06-25
  • 2017-05-13
  • 2016-05-16
  • 2018-10-28
  • 2017-02-10
  • 2017-11-23
相关资源
最近更新 更多