相关疑难解决方法(0)

如何获得passport.authenticate本地策略使用async/await模式

我一直未能获得passport.authenticate在async/await或promise模式下工作.这是一个我认为应该工作的例子,但它无法执行passport.authenticate().

const passport = require("passport");

let user;

try {
    user = await __promisifiedPassportAuthentication();

    console.log("You'll never have this ", user);
} catch (err) {
    throw err;
}

function __promisifiedPassportAuthentication() {
    return new Promise((resolve, reject) => {

        console.log("I run");

        passport.authenticate('local', (err, user, info) => {

            console.log("I never run");

            if (err) reject(err);
            if (user) resolve(user);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何智慧的圣言都会受到高度赞赏.

node.js async-await passport-local passport.js

7
推荐指数
1
解决办法
4255
查看次数

如何使用 graphql 和护照设置身份验证,但仍使用 Playground

将身份验证添加到后端 Graphql 服务器后,“Schema”和“Docs”在 Graphql Playground 中不再可见。在 Playground 中向“HTTP HEADERS”添加令牌时执行查询在经过身份验证时可以正常工作,而在用户未经身份验证时则不能正常工作,所以没关系。

我们禁用了 Apollo 服务器的内置 Playground,并使用中间件graphql-playground-middleware-express来使用不同的 URL 并绕过身份验证。我们现在可以浏览到 Playground 并使用它,但我们无法读取那里的“架构”或“文档”。

尝试启用introspection并没有解决此问题。passport.authenticate()打电话过来会更好Contextapollo-server?还有一个名为Passport-graphql 的工具,但它适用于本地策略,可能无法解决问题。我还尝试在调用 Playground 路由之前在标头中设置令牌,但这不起作用。

我们对此有点迷失。感谢您为我们提供的任何见解。

在此输入图像描述

相关代码:

// index/ts
import passport from 'passport'
import expressPlayground from 'graphql-playground-middleware-express'

const app = express()
app.use(cors({ origin: true }))
app.get('/playground', expressPlayground({ endpoint: '/graphql' }))
app.use(passport.initialize())
passport.use(bearerStrategy)

app.use(
  passport.authenticate('oauth-bearer', { session: false }),
  (req, _res, next) => { next() }
)
;(async () => { …
Run Code Online (Sandbox Code Playgroud)

express passport.js graphql apollo-server passport-azure-ad

2
推荐指数
1
解决办法
4954
查看次数