DEV Community

Dibyendu Swar
Dibyendu Swar

Posted on

req.flash is missing after res.redirect in nestJS

I am unable to use req.flash('success') after redirect. Its empty after redirection.

main.ts

`
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';
import * as session from 'express-session';
import * as passport from 'passport';
import * as FileStore from 'session-file-store';
import flash = require('connect-flash');

async function bootstrap() {
const app = await NestFactory.create(AppModule);

const hour = 3600000;

app.use(
session({
secret: 'thisIsAHorribleSecret',
saveUninitialized: true,
resave: true,
store: new (FileStore(session))({}),
cookie: {
sameSite: true,
httpOnly: false,
maxAge: hour * 1,
},
}),
);

app.use(flash());

app.use((req, res, next) => {
console.log(req.flash('success'));
res.locals.authUser = req.user;
res.locals.success_msg = req.flash('success');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});

app.use(passport.initialize());
app.use(passport.session());

app.useStaticAssets(join(dirname, '..', 'public'));
app.setBaseViewsDir(join(
dirname, '..', 'src/views'));
app.setViewEngine('hbs');
app.set('view options', { layout: 'layouts/layout' }); // default layout

await app.listen(3001);
}`

users.controller.ts

@UseGuards(LocalAuthGuard)
@Post('/login')
async login(@Req() req: Request, @Res() res: Response): Promise<any> {
**req.flash('success', 'Login successful!'); **
res.redirect('/users/change-password');
// return res.render('users/login', {
// layout: 'layouts/layout',
// vars: { errMsg: null, sucMsg: 'Found @' + req.user['name'] },
// });
}

Top comments (0)