首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nodejs passport认证令牌

nodejs passport认证令牌
EN

Stack Overflow用户
提问于 2013-07-01 11:27:56
回答 3查看 46.1K关注 0票数 72

我正在编写一个nodejs应用程序,我希望它既可以用作web应用程序,也可以用作API提供者。一旦用户通过身份验证,我希望为该用户分配一个令牌,以供后续请求使用。这对于web应用程序的passport非常有效,因为我只需在会话中使用令牌序列化和反序列化用户。但是,在响应API请求时,不需要设置cookie来存储会话信息。理想情况下,passport将在会话和请求正文中查找令牌。有没有办法通过配置passport来实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-15 11:05:49

只需在每个请求上使用访问令牌。不需要使用会话。以下是工作流程:

代码语言:javascript
运行
复制
POST /signin

  1. 用户名和密码发布在客户端请求中。
  2. 服务器使用passport的本地策略对用户进行身份验证。参见passport-local.
  3. If凭据表示有效用户,服务器返回由某个生成器生成的访问令牌。node-jwt-simple是一个不错的选择。如果凭据无效,请重定向至/signin.

当客户端从授权服务器接收到访问令牌时,它可以向服务器上受保护的资源发出请求。例如:

GET /api/v1/somefunction?token='abcedf'

客户端使用令牌调用服务器

  • argument.

  • The服务器使用passport的持有者策略对令牌进行身份验证。请参阅passport-http-bearer.

参考

Make a secure oauth API with passport.js and express.js (node.js)

票数 130
EN

Stack Overflow用户

发布于 2013-12-15 01:46:32

正如bnuhero提到的,你不需要会话(尽管这种方法也有它的优点)。下面是我为此启动的一个样板项目:https://github.com/roblevintennis/passport-api-tokens

这里有一个替代方案,它很容易遵循tut (但它确实使用了会话)。可能是一个很好的交叉引用:http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

还有一个与之相关的参考:http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/

票数 7
EN

Stack Overflow用户

发布于 2018-10-31 14:25:39

您可以在nodejs的passport中使用isAuthenticated()方法。在每个路由上,您可以检查if(req.isAuthenticated()),如果它已经通过身份验证,它将允许您访问路由,或者您可以重定向或在else块中执行任何其他任何其他操作。在Passport中,您可以为成功登录返回done(null,user),它会将数据存储在cookie中,直到会话结束。在user中,您可以查看有关用户的信息,如电子邮件、密码等。

代码语言:javascript
运行
复制
app.get('/home', (req, res) =>{
    if(req.isAuthenticated()){
        //render home page
    } else {
        // go back to the login page or throw soome error
    }
}) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17397052

复制
相关文章

相似问题

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