Я все еще новичок в выражении, и есть еще много вещей, которые я не понимаю.
Я создал бэкэнд-систему, внедрив CSRUF. но в CSURF требуется сеанс cookie и экспресс-сеанс. https://github.com/expressjs/csurf
И меня это смущает
потому что я использую реагирующее приложение в моем веб-интерфейсе, что означает, что мой веб-сайт - SPA (одностраничное приложение), и мне нужно, чтобы файл cookie отправил его моему клиенту. пока мой сайт работает нормально.
но у меня возникла проблема: мне нужен файл cookie с моего сервера на клиентскую сторону. Я не знаю, как получить файл cookie, используя эти 2 cookie-session
и express-session
.
Как использовать куки для моей клиентской стороны? и как они используются: cookie-сессия и экспресс-сессия?
когда я проверяю, используя console.log(req.session)
я получаю это:
Session {
csrfSecret: '36T2Hdv04-SplknGp2IcIOfU',
passport: { user: '117427002338010505238' },
_csrf: 'AklVuGUs-pCvbQ-C6Q2LjWze5fLqkADw7gLw'
}
Что я сделал до сих пор:
Я использую res.cookie('c_token', req.csrfToken());
для отправки csrf_token для моего клиента, который должен быть взят из сеанса _csrf
. поправьте меня, если я ошибаюсь .
И увидев это: https://stackoverflow.com/a/46861437/10583820
Я должен быть в состоянии получить данные через этот файл cookie: hammer
и hammer.sig
Server.js
import express from 'express';
import bodyParser from 'body-parser';
import passport from 'passport';
import connection from './config/conn';
import { CategoryRoutes,ProductRoutes,CartRoutes,AuthRoutes} from './modules';
import session from 'express-session';
import csrf from 'csurf'
import cors from 'cors'
import cookieParser from 'cookie-parser'
import cookieSession from 'cookie-session'
import passportSetup from './config/passport-setup';
import keys from './config/keys';
const app = express();
// app.use(cookieParser());
app.use(cookieSession({
name: 'hammer',
keys: [keys.session.cookieKey],
maxAge: 24 * 60 * 60 * 1000 // 24 hours
}))
app.use(session({
secret: 'iCtkGVe0-4FKIGgBopL2QUM9K-jIK9miZhQE',
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000, // satu hari,
sameSite:true
}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(csrf({ cookie: false }));
app.use((req,res,next)=>{
res.header('X-XSS-Protection', '1; mode=block');
res.header('X-Frame-Options','deny');
res.header('X-Content-Type-Options','nosniff');
res.removeHeader("X-Powered-By");
res.cookie('c_token', req.csrfToken());
req.session._csrf = req.csrfToken();
console.log(req.session);
next();
})
app.use(cors({ origin:'http://localhost:3000/',credentials:true}))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use('/api/', [CategoryRoutes, ProductRoutes, CartRoutes, AuthRoutes]);
const port = process.env.PORT || 5000;
app.listen(port, (err) => {
if(err){
console.log(err);
}else{
console.log(`Server running on port ! ${port}`);
}
});
Пожалуйста, дайте мне помощь, или дайте мне хорошую справку, чтобы справиться с этим. Я работал над этим в течение нескольких дней: (* 1054 *