我正在编写一个nodejs应用程序,我希望它既可以用作web应用程序,也可以用作API提供者。一旦用户通过身份验证,我希望为该用户分配一个令牌,以供后续请求使用。这对于web应用程序的passport非常有效,因为我只需在会话中使用令牌序列化和反序列化用户。但是,在响应API请求时,不需要设置cookie来存储会话信息。理想情况下,passport将在会话和请求正文中查找令牌。有没有办法通过配置passport来实现这一点?
发布于 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/
发布于 2018-10-31 14:25:39
您可以在nodejs的passport中使用isAuthenticated()方法。在每个路由上,您可以检查if(req.isAuthenticated()),如果它已经通过身份验证,它将允许您访问路由,或者您可以重定向或在else块中执行任何其他任何其他操作。在Passport中,您可以为成功登录返回done(null,user),它会将数据存储在cookie中,直到会话结束。在user中,您可以查看有关用户的信息,如电子邮件、密码等。
app.get('/home', (req, res) =>{
if(req.isAuthenticated()){
//render home page
} else {
// go back to the login page or throw soome error
}
})
https://stackoverflow.com/questions/17397052
复制相似问题