Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js passport.js本地策略-使用用户名登录,使用令牌验证后续请求_Node.js_Passport.js - Fatal编程技术网

Node.js passport.js本地策略-使用用户名登录,使用令牌验证后续请求

Node.js passport.js本地策略-使用用户名登录,使用令牌验证后续请求,node.js,passport.js,Node.js,Passport.js,我在passport.js使用本地策略时遇到问题。我有两个具体问题: 我没有使用持久会话来处理示例代码(请参见 最基本的情况 我想不上课。对于 最基本的情况是,在登录时,我将传入一个用户名+密码 为我提供一个会话令牌,在定期请求时,我将使用此令牌 会话令牌与其他一些东西进行哈希以进行身份验证。这是吗 用护照容易吗?在这种情况下,passport似乎没有提供太多的功能,而编写自己的解决方案更容易——只需使用标准检查登录/注销,然后使用中间件取消对请求令牌的处理以验证请求。简单的奶酪 问题1: 使用

我在passport.js使用本地策略时遇到问题。我有两个具体问题:

  • 我没有使用持久会话来处理示例代码(请参见 最基本的情况
  • 我想不上课。对于 最基本的情况是,在登录时,我将传入一个用户名+密码 为我提供一个会话令牌,在定期请求时,我将使用此令牌 会话令牌与其他一些东西进行哈希以进行身份验证。这是吗 用护照容易吗?在这种情况下,passport似乎没有提供太多的功能,而编写自己的解决方案更容易——只需使用标准检查登录/注销,然后使用中间件取消对请求令牌的处理以验证请求。简单的奶酪
  • 问题1:

    使用库中的参考代码:

    我执行一系列命令来显示注销与登录:

    A.支票/帐户,未登录

    curl -v localhost:3000/account
    
    curl -v localhost:3000/account
    
    正如所料,我得到了一个重定向到/login的消息

    <p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
    
    正如所料,我得到了一个重定向到/

    <p>Moved Temporarily. Redirecting to <a href="http://127.0.0.1:3000/">http://127.0.0.1:3000/</a></p>
    
    到底是怎么回事?

    <p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
    
    已临时移动。重定向到


    对于1,会话支持要求在服务器端配置cookie并由用户代理使用。通常这是一个浏览器,它将在每个请求中传输cookie,服务器使用cookie恢复您的登录状态

    但是,您正在使用的curl命令不会传输cookie,因此每个请求在服务器上看起来都是“新的”,这就是为什么每次都会看到重定向到登录的原因。我怀疑如果您在浏览器中尝试相同的请求,这将按预期工作

    至于2,我需要更多的细节来建议一个好的解决方案。如果您使用HTML和web浏览器访问您的站点,那么您最终将需要会话之类的东西。您可以每次在查询参数中传输此信息,而不是cookie,但最终将重建Express/Connect提供的许多现成信息

    在任何情况下,如果您选择走这条路线,Passport提供了一个干净的接口来实现您自己的身份验证策略。您只需解析相关凭证的请求,并在数据库中查找用户


    API客户端是不同的,我建议看一下Passport的OAuth支持,它提供了验证与特定客户端关联的访问令牌的简单方法。

    问题不在于Passport,
    curl
    命令需要存储cookie,因此,应该使用
    -c
    -b
    参数来模拟浏览器行为。从卷曲手册页:

    curl-b cookies.txt-c cookies.txt www.example.com

    这个命令的作用是将cookies存储在cookies.txt中,并发送cookies从cookies.txt读取它们-这是curl模仿netscape cookie jar文件格式进行写入和读取的方式


    至于你的问题本身,贾里德已经回答了

    我的系统或多或少是一个API,用于智能手机客户端登录一次,然后使用会话令牌。我用passport搞乱了OAuth,效果很好;我将看看如何实施我自己的策略。很高兴看到创建者积极地给予支持。我是一个休闲游戏开发者,passportJS为我节省了很多开发时间+1.
    <p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>