PassportJS - GET 请求中的登录凭据?

Posted

技术标签:

【中文标题】PassportJS - GET 请求中的登录凭据?【英文标题】:PassportJS - login credentials in GET request? 【发布时间】:2013-11-06 17:05:59 【问题描述】:

我正在开发一个 RESTful Web 应用程序。我想让用户 registration 通过 POST 请求(请求正文中的用户名和密码)发生,用户 login 通过 >GET 请求(查询中的用户名和密码)。

PassportJS documentation 似乎表明 Passport 期望凭据位于请求正文中(它会解析)。我不太明白它如何处理 GET 请求,因为它们没有正文(通常,如果我理解正确的话)。

我将如何进行这项工作?这是一个坏主意吗?如果是,是否有 RESTful 替代方案?

【问题讨论】:

【参考方案1】:

是的,这是个坏主意。 GET 请求进入浏览器历史记录和服务器日志文件,在地址栏中可见,可以被代理缓存等。这违反了 HTTP 语义和安全性。只需按照行业最佳实践登录,即可节省构建实际应用程序的精力。如果它给您带来温暖的模糊感,您可以将登录视为会话资源的 CREATE 操作,根据 REST 通过 POST 请求完成。

【讨论】:

那么是否有 RESTful 方式来处理登录?例如,this question 建议使用“访问令牌”作为 资源。但是,这似乎有点做作,对我来说,让用户成为资源似乎更合适(因为这就是代码中实际发生的事情)。 @Xaan - 为什么不只是向/login 发帖? @WiredPrairie - 我的意思是,这可行,但并不真正遵循 CRUD。 如果它给您带来温暖的模糊感,您可以将登录视为会话资源的 CREATE 操作,根据 REST 通过 POST 请求完成。

以上是关于PassportJS - GET 请求中的登录凭据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自passportjs的会话

使用现有凭据向 youtube 数据 api 发出请求

AngularJS:POST请求返回302后发送的GET请求用于登录

PassportJS 中的会话如何协同工作

如何在 pentaho bi url 中传递登录凭据

为啥 Node 中的 PassportJS 不会在注销时删除会话