首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过在JSON中传递凭据详细信息来使用Django创建登录URI

通过在JSON中传递凭据详细信息来使用Django创建登录URI
EN

Stack Overflow用户
提问于 2016-07-04 03:13:27
回答 1查看 419关注 0票数 0

我目前正在为使用Django和Django restframework的应用程序创建rest api,即uri。其中一个api端点是login,它将具有类似app/login的api端点。此uri不仅使用用户名和密码对用户进行身份验证,而且还检查用户是否具有有效的会话。

此外,我希望在post请求中将其作为JSON传递,而不使用任何HTML模板表单,类似于:

代码语言:javascript
复制
{
    'username' : 'username',
    'password': 'password'
}

我知道这很危险,因为“用户名”和“密码”将以明文形式附加在POST请求中。但是我需要这样做,因为应用程序的前端部分将被单独设计,并且将只使用api端点,那么,我如何实现这一点?另外,对用户、会话或令牌进行身份验证的最佳方式是什么?我参考了许多链接,但不能理解每种身份验证类型的最佳用例。

另一件事是,我对令牌身份验证是如何工作的感到困惑。这是采用用户凭据,还是仅接受已提供给每个用户实例的令牌,并仅根据该令牌验证用户?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-04 23:57:41

如果您担心安全性,请确保在您的网站上使用SSL。Password将以明文的形式在互联网上以的形式发送,所以非常建议您这样做。为此,您需要一个SSL证书。你可以在线阅读更多关于它的信息。

即使您有一个HTML模板表单,密码仍将以明文形式存储在您的请求中的某处。从安全性的角度来看,这是没有区别的。

至于认证用户、令牌或会话身份验证的最佳方式是什么,这取决于您的需求。对于移动应用程序,你通常会使用令牌身份验证,因为它更容易处理,单页面web应用程序也是如此。但是,如果您正在使用一个内置了会话身份验证的框架,我会说这是最好的选择。

令牌身份验证在登录时以用户名和密码的形式获取用户凭据。当用户想要对请求进行身份验证时,它会以"Authorization: token af538baa9045a84c0e889f672baf83ff24“的形式发送一个带有令牌的头部字段。有些人决定以不同的方式命名它们的头,但最好是简单地遵循惯例。服务器端(在您的示例中是Django应用程序)通过请求头部中发送的令牌对用户进行身份验证。它通过查找发送的令牌和用户之间的关系来实现这一点-通过存储令牌属于哪个用户的数据库中的表来实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38173488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档