nfl*_*cco 0 node.js passport.js
我使用本地策略遇到了passport.js的问题.我有两个具体问题:
问题1:
使用库中的参考代码:
https://github.com/jaredhanson/passport-local/blob/master/examples/login/app.js
我做了一系列命令来显示已登出和已登录:
A.支票/账户,未登录
curl -v localhost:3000/account
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,我得到了一个重定向到/ login
<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
Run Code Online (Sandbox Code Playgroud)
B.登录
curl -v -d "username=bob&password=secret" http://127.0.0.1:3000/login
Run Code Online (Sandbox Code Playgroud)
也如预期的那样,我得到一个重定向到/
<p>Moved Temporarily. Redirecting to <a href="http://127.0.0.1:3000/">http://127.0.0.1:3000/</a></p>
Run Code Online (Sandbox Code Playgroud)
C.检查/帐户,登录
curl -v localhost:3000/account
Run Code Online (Sandbox Code Playgroud)
我勒个去???
<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
Run Code Online (Sandbox Code Playgroud)
对于1,会话支持要求在服务器端配置cookie并由用户代理使用.通常,这是一个浏览器,它将在每个请求中传输cookie,服务器使用它们来恢复您的登录状态.
但是,您使用的curl命令不会传输cookie,因此每个请求对服务器看起来都是"新的",这就是您每次都看到重定向登录的原因.我怀疑如果你在浏览器中尝试相同的请求,这将按预期工作.
至于2,我需要更多细节来建议一个好的解决方案.如果您使用HTML和Web浏览器访问您的网站,您最终将需要像会话这样的东西.您可以每次在查询参数中传输此信息,而不是cookie,但您最终将重建很多Express/Connect提供的开箱即用信息.
在任何情况下,如果您选择沿着该路线前进,Passport会提供一个干净的界面来实现您自己的身份验证策略.您只需要解析相关凭据的请求并在数据库中查找用户.
API客户端是不同的,我建议看看Passport的OAuth支持,它提供了验证与特定客户端关联的访问令牌的简便方法.
| 归档时间: |
|
| 查看次数: |
4126 次 |
| 最近记录: |