在视图或使用者中使用jwt标记验证并获取用户

时间:2017-09-15 02:54:34

标签: django django-rest-framework django-rest-framework-jwt

我正在使用django-rest-framework作为REST API。此外,对于JSON Web令牌身份验证,我使用的是django-rest-framework-jwt。成功登录后,将为用户提供令牌。我已经找到了verify a token如何使用api调用,但有没有办法在视图中验证令牌并获取该令牌的用户,类似于request.user?

我需要它在使用django-channels时验证消费者内部:

def ws_connect(message):
    params = parse_qs(message.content["query_string"])
    if b"token" in params:
        token = params[b"token"][0]

    # validate the token and get the user object

    # create an object with that user

2 个答案:

答案 0 :(得分:11)

我正要验证令牌并通过导入VerifyJSONWebTokenSerializer类来获取用户。

Button loginButton = (Button) findViewById(R.id.login_button);
Typeface tf = Typeface.createFromAsset(getAssets(), "Lato-Regular.ttf");
loginButton.setTypeface(tf);

希望这有助于像我这样的身体。

答案 1 :(得分:0)

使用TokenBackend代替VerifyJSONWebTokenSerializer

from rest_framework_simplejwt.backends import TokenBackend
token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]
data = {'token': token}
        try:
            valid_data = TokenBackend(algorithm='HS256').decode(token,verify=False)
            user = valid_data['user']
            request.user = user
        except ValidationError as v:
            print("validation error", v)