【发布时间】:2019-12-17 17:20:36
【问题描述】:
我正在尝试在 Nestjs 应用程序中实现 passport-auth0 策略,并且我正在使用 GraphQl for api,最后我最终得到了任何一个
TypeError: res.setHeader is not a function at Auth0 Strategy.strategy.redirect 要么 OAuth 2.0 身份验证在使用状态时需要会话支持。您忘记使用快速会话中间件了吗?
我按照nestjs文档中的说明仍然是同样的问题,我检查了github存储库也没有成功
import { use, serializeUser, deserializeUser } from 'passport';
import { Strategy } from 'passport-auth0';
import { Injectable } from '@nestjs/common';
import { environment } from '../../environments/environment';
import { PassportStrategy } from '@nestjs/passport';
@Injectable()
export class Auth0Strategy extends PassportStrategy(Strategy) {
constructor() {
super(
{
domain: environment.auth0.domain,
clientID: environment.auth0.clientID,
clientSecret: environment.auth0.clientSecret,
callbackURL: environment.auth0.callbackURL,
state: false // or true
},
async (accessToken, refreshToken, extraParams, profile, done) => {
return done(null, profile);
}
);
use(this);
serializeUser((user, done) => {
done(null, user);
});
deserializeUser((user, done) => {
done(null, user);
});
}
}
import { Injectable, ExecutionContext } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { GqlExecutionContext } from '@nestjs/graphql';
@Injectable()
export class Auth0Guard extends AuthGuard('auth0') {
getRequest(context: ExecutionContext) {
const ctx = GqlExecutionContext.create(context);
return ctx.getContext().req;
}
}
【问题讨论】:
-
您的
main.ts中是否导入并配置了表达式? -
不,我该怎么做?
-
如果您计划使用会话,您可能需要阅读如何使用会话实现护照,或者如果您计划使用 JWT 之类的东西,如何禁用会话。