我有一个使用Passport.JS进行oAuth2身份验证的Koa.JS web应用程序。此web应用程序是用typescript编写的。下面是验证码:
import { deserializeUser, serializeUser, use } from 'koa-passport';
import { Strategy, VerifyCallback } from 'passport-oauth2';
import config from 'config';
import { Authenticator } from 'passport';
const OAuth2Strategy = Strategy;
use(
new OAuth2Strategy(
config.get('oauth2'),
(accessToken: string, refreshToken: string, profile: any, done: VerifyCallback): void =>
{
if (accessToken && refreshToken) {
const tokens = { access_token: accessToken, refresh_token: refreshToken };
done(null, tokens);
} else {
done(undefined, undefined, { message: 'An error occurred!' });
}
}
)
);
serializeUser<Authenticator, Authenticator>(
(user: Authenticator, done: (err: any, id?: Authenticator | undefined) => void): void => {
done(null, user);
}
);使用@types/passport 1.0.4可以很好地编译web应用程序,但当我将@types/passport的版本升级到1.0.5时,会产生新的错误。
Type 'Authenticator<Handler, any, any, AuthenticateOptions>' does not satisfy the constraint 'IncomingMessage'.
Type 'Authenticator<Handler, any, any, AuthenticateOptions>' is missing the following properties from type 'IncomingMessage': aborted, httpVersion, httpVersionMajor, httpVersionMinor, and 45 more.
serializeUser<Authenticator, Authenticator>有没有人经历过这种情况?
发布于 2021-03-16 07:19:17
也许是Authenticator接口的变化?你说什么!?是-仅对版本号进行微小更改的接口更改!
我预计koa-passport的serializeUser界面可能与passport的更新不同步……在我的世界里--界面的突破性变化通常意味着重大的版本变化。
如下所示,Passport的V1.0.4允许使用通用TUser
serializeUser(fn:(user: TUser,done:(err: any,id?:TID) => void) => void):void;
现在,在passport的V1.0.5中,接口被更改为仅限于Express.User。serializeUser(fn:(user: Express.User,done:(err: any,id?:TID) => void) => void):void;
https://stackoverflow.com/questions/65619819
复制相似问题