【发布时间】:2020-07-13 20:14:16
【问题描述】:
嗯,我有一个与this one 类似的问题(我知道这与另一个类似)。但是在我安装 @types/passport 之前,req.user 是未定义的。
尽管我的服务器上有会话实例化,但现在我在 VS Code 中遇到了这个问题。
问题
实例化
// Middlewares
app.use(bodyParser.urlencoded({ extended: false }));
app.use(logger(process.env.NODE_ENV === 'development' ? 'dev' : 'combined'));
app.use(express.json());
app.use(session({
secret: process.env.NODE_ENV === 'development' ? process.env.SESSION_SECRET : 'secret',
resave: false,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
以上没有错误。因此......该应用程序实际上可以工作......但我在我的 VSC 文件上得到了这个“错误颜色”,这将是很好的避免。有什么建议吗?
以防万一,我将包含整个路由器文件:
// POST - Crear usuario
router.post('/', async (req: Request, res: Response) => {
const resultado: IResultado = {
data: null,
ok: false
};
const messages: Array<object> = [];
const datos: IUsuario = req.body;
// Validación de campos
if (!validator.isEmail(datos.email)) {
messages.push({ email: 'El correo electrónico es inválido'});
}
if (validator.isLength(datos.password, { max: 5})) {
messages.push({ password: 'La contraseña debe tener como mínimo seis caracteres' });
}
if (!validator.isMobilePhone(datos.telefono, ['es-UY'])) {
messages.push({ telefono: 'El número de teléfono es inválido' });
}
if (!empty(messages)) {
resultado.message = 'No se pudo crear el usuario';
resultado.messages = messages;
return res.json(resultado);
}
datos.password = await bcrypt.hash(datos.password, 10);
datos.fechaCreacion = Date.now();
datos.fechaActualizacion = Date.now();
if (req.user && req.user) {
datos.propietario = req.user.email;
}
const ref: any = db.collection('usuarios').doc(datos.email);
const doc = await ref.get();
if (doc.exists) {
// Usuario ya existe
resultado.message = 'El correo electrónico ya está en uso';
return res.json(resultado);
}
try {
await ref.set(datos);
delete datos.password;
resultado.message = 'Usuario creado correctamente';
resultado.data = datos;
resultado.ok = true;
return res.json(resultado);
} catch(error) {
resultado.message = 'No se pudo crear el usuario';
resultado.error = error;
console.log(error);
return res.status(500).json(resultado);
}
});
User 接口(@987654328@ 模块)
// tslint:disable-next-line:no-empty-interface
interface AuthInfo {}
// tslint:disable-next-line:no-empty-interface
interface User {}
interface Request {
authInfo?: AuthInfo;
user?: User;
...
【问题讨论】:
-
您确定
user有自己的物业邮箱吗?看起来不是,但您可能可以手动初始化它。默认情况下,它仅包含username和id属性 -
它没有。但是在
@types/passport模块中定义。我会按照你提到的那样扩展它。
标签: javascript node.js typescript express passport.js