首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合Typescript Koa-Router和Passport

组合Typescript Koa-Router和Passport
EN

Stack Overflow用户
提问于 2020-01-16 01:17:23
回答 2查看 662关注 0票数 4

我是一个打字新手,正在尝试集成koa-routerkoa-passport。已安装所有@types\

代码语言:javascript
复制
import Koa from "koa";
import Route from "koa-router";
import passport from "koa-passport";
import session from "koa-session";

const app = new Koa();
const router = new Route();
app.keys = [process.env.SECRET_KEY || "secret"];
app.use(session({}, app));
app.use(passport.initialize());
app.use(passport.session());

app.use(router.routes()).use(router.allowedMethods());

当我尝试在router中使用passport方法时。

代码语言:javascript
复制
router.post("Logout", "/logout", ctx => {
  if (ctx.isAuthenticated()) {
    ctx.logout();
  }
});

在上下文(Ctx)方法上出错

代码语言:javascript
复制
Property 'isAuthenticated' does not exist on type 'ParameterizedContext<any, IRouterParamContext<any, {}>>'.
Property 'logout' does not exist on type 'ParameterizedContext<any, IRouterParamContext<any, {}>>'.

我尝试了不同的方法,但都没有成功。感谢任何人的帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-05-02 18:43:47

我发现一种方法是将所有路由定义为typeof KoaPassport,并将passport的功能和类型定义分开。对于路由,as Koa.Middleware也有这个问题

代码语言:javascript
复制
// src/index.ts
import routes from "./routes";
...
routes(router, model, passport);
代码语言:javascript
复制
// src/routes/index.ts
function routes(router: Route, model: Model, passport: typeof KoaPassport) {
  router
        .post("Login", "/login", (async (ctx, next) => {
            await passport.authenticate("local", async (err, user) => {
                  ....
            })(ctx, next);
        }) as Koa.Middleware)
}
票数 0
EN

Stack Overflow用户

发布于 2021-08-11 06:25:10

我发现的一种方法是使用

代码语言:javascript
复制
const router = new Route<{}, koa.Context>();

koa-router类型将passport方法添加到https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/koa-passport/index.d.ts#L23中的koa.ContextRouter的第二个类型参数允许我们向中间件上下文添加额外的属性。通过传入koa.Context,我们可以访问koa-router添加的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59756522

复制
相关文章

相似问题

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