如何使用JWT令牌获取用户详细信息

时间:2018-03-04 19:33:08

标签: django django-rest-framework

我使用角5前端和django作为后端。我使用JWT令牌在django和angular之间进行通信。如何使用令牌在后端获取记录的用户详细信息。

EG:

class PostSerializer(ModelSerializer):
class Meta:
model = PostDetail
fields = [
'title',
'upvote',
]

这里upvote是一个包含所有投票用户列表的多对多字段。我想再添加一个字段" user_vote_status"检查登录用户的投票状态。

我怎么能弄清楚这个问题,请帮助我。

2 个答案:

答案 0 :(得分:0)

在这里。 JWT由三部分组成,分为“。”中心部分包​​含用户详细信息。因此,您可以通过分割来解决该问题并使用window.atob

解码该部分
function getUserInfo() {
  const token = getToken();
  let payload;
  if (token) {
    payload = token.split(".")[1];
    payload = window.atob(payload);
    return JSON.parse(payload);
  } else {
    return null;
  }
}

function getToken() {
  return localStorage.getItem("jwt-token");
}

答案 1 :(得分:0)

您可以通过这种方式在任何django视图中获取usernamec

@api_view(['POST'])    
def apiname(request):
    username = request.user.username

从角度前端开始,您需要在标题

中发送jwt标记
Authorization: JWT "token"