【问题标题】:Is the Token supposed to change each time?令牌应该每次都改变吗?
【发布时间】:2017-10-13 01:18:06
【问题描述】:

这是我正在学习的教程,链接

https://thinkster.io/tutorials/django-json-api/authentication

我一直到最后,粗体字的部分 “使用 Postman 检索和更新用户”

当我使用 Postman 并在 url 127.0.0.1:8000/api/users/login 上执行 POST 请求时 使用正确的电子邮件和密码,每次登录时我都会得到不同的令牌,这正常吗?如果是这样,以下如何工作....

当我在 url 上执行 GET 时,问题是根据教程 127.0.0.1:8000/api/用户

收到回复

{ “用户”:{ "detail": "未提供身份验证凭据。" } }

但根据教程,我应该得到用户的用户名。我发送的请求有误吗?

代码中的 cmets 告诉我使用 PostMan 在请求的标头中使用令牌,所以我这样做了,结果仍然相同。我什至尝试将令牌放在 user/?token='tokengoeshere' 之后,结果仍然相同。

每次登录时令牌都会发生变化,令牌将如何引导我访问用户。

教程和注释代码中说,如果我使用令牌,它应该以用户和令牌响应。

【问题讨论】:

  • 你使用哪个框架作为你的前端?令牌认证用于跨平台认证目的。如果您使用 django 模板,那么会话或基本身份验证就足够了。
  • 本教程将使用 Angular js 做前端,但我还没到那一步
  • 您可以发布视图吗?

标签: python json django jwt postman


【解决方案1】:

我已经阅读了教程,并且我怀疑,您的权限类是 (isAuthenticated, )。 这意味着您需要登录才能发出该请求。这就是错误消息的原因。

通过删除权限类属性或将其更改为 (AllowAny, ),您可以毫无问题地执行请求。但是从逻辑上检索用户需要授权。这就是权限类的原因。

在 Angular js 中使用令牌,发布到登录 API 后,您将收到一个令牌。令牌每次都会不同。令牌是用于授权的用户的某种身份。登录后,您应该将令牌保留在每个请求的请求标头中,直到注销,然后删除令牌。此令牌证明您在服务器中的权限。

你需要继续阅读教程,还要编写一些拦截器服务,以便每次都将令牌放入请求头中。

通过添加尝试获取请求

“授权”:your_token

在标题中。 它应该返回响应 200。

我的建议是,你现在跳过身份验证部分,专注于构建前端,然后在你了解 angularjs 如何工作并且可以集成到 django 之后再回来。

【讨论】:

  • 谢谢你,我已经弄清楚出了什么问题,我的设置中的密钥不知何故不完整,我通过复制修复它,将接受你的建议并做前端,这样我就可以了直观地看到一切。
【解决方案2】:

我遇到了同样的问题,我这样做了:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2021-09-20
    • 2015-10-15
    • 2016-04-01
    • 2011-08-25
    • 2020-07-24
    • 2019-08-15
    相关资源
    最近更新 更多