我在nestjs中使用nest-keycloak-connect,我想创建我自己的类,从AuthGuard类扩展以获得一些自定义功能
我试过了,效果很好
@Injectable()
export class KeycloakAuthGuard extends AuthGuard implements CanActivate {
canActivate(context: ExecutionContext) {
const value = super.canActivate(context);
const [request] = extractRequest(context);
console.log(' ++++++++++++++++++ ++++++++++++++ ', request.user); //getting user here
// Some Custom functionality here..... like call any external request
return value;
}
}
但是我需要添加一个构造函数,这样我就可以在这里使用一些服务,比如 HttpService 谁能帮我看看我该怎么做?
constructor(private http: HttpService) { super() //contructor requires 4 arguments }
如果我给构造函数参数,比如
constructor(
private http: HttpService,
@Inject(KEYCLOAK_INSTANCE)
private keycloak: any,
@Inject(KEYCLOAK_CONNECT_OPTIONS)
private keycloakOpts: any,
@Inject(KEYCLOAK_LOGGER)
private logger: Logger,
private readonly reflector: Reflector,
) {
super(
keycloak,
keycloakOpts,
logger,
reflector
);
}
我遇到了这个错误
“KeycloakAuthGuard”类错误地扩展了基类“AuthGuard”。类型具有私有属性“keycloak”的单独声明。
您可以在这里找到 类 AuthGaurd代码: https ://github.com/ferrerojosh/nest-keycloak-connect/blob/master/src/guards/auth.guard.ts
nest-keycloak-connect 包 https://www.npmjs.com/package/nest-keycloak-connect