Чтение Cookies из Express Middleware - PullRequest
0 голосов
/ 23 февраля 2020

Я создаю приложение, используя модули Express и Unblocker , а также CookieParser для чтения ie cook. У меня есть простая система, где оператор if читает req.cookies.visits и видит, равен ли он 0 или не определен, затем перенаправляет на экран пароля. Однако проблема возникает, когда модуль Unblocker учитывается. Выполнение

app.get('/proxy', function(req, res){
    if(req.cookies.visits==0||req.cookies.visits==undefined){
        res.redirect("/password");
    } else {
        res.sendFile(__dirname + '/public/index.html');
    }
});

не считывает повара ie, когда выполняется запрос (потому что маршрут - это / proxy / http address). Я попытался использовать express middleware, но выполнение req.cookie.visits приводит к неопределенной ошибке. Unblocker также имеет встроенную функцию промежуточного программного обеспечения, но на странице npm показано только, как сделать ответ, а не запрос.

В принципе, как я могу читать повара ie с каждым запросом и быть совместим с этим модулем?

1 Ответ

0 голосов
/ 24 февраля 2020

Ознакомьтесь с полным примером с промежуточным программным обеспечением:

const express = require('express')
const app = express();
const port = 3000;
var Unblocker = require('unblocker');
const cookieParser = require("cookie-parser");
app.use(cookieParser());

app.use(new Unblocker({prefix: '/proxy/'}));

function checkVisits(req,res,next){
    let visits;
    try {
        visits = req.cookies.visits;
        if(isNaN(visits)){
            visits = 0;
        }
        console.log("visits:" + visits);
    } catch {
        console.log("no visits");
        visits = 0;
    }finally{
        if(visits === 0){
            res.redirect("/password");
            return;
        }
        res.visits = parseInt(visits)+1;
        res.cookie('visits',res.visits, { maxAge: 900000, httpOnly: true });
        return next();
    }
}

//add checkVisits(req,res,next) as a middleware
app.get('/index',checkVisits, function (req, res) {
    res.send('index visits:'+res.visits);
  })
//add checkVisits(req,res,next) as a middleware
app.get('/home',checkVisits, function (req, res) {
    res.send('home visits:'+res.visits);
})

app.get('/password', function (req, res) {
    res.send('password page');
})

app.listen(port, () => console.log("App listening on port %s!", port))

Промежуточное программное обеспечение checkVisits (req, res, next) проверит на посещение cook ie. Если количество файлов cookie посещений равно 0, пользователь будет перенаправлен на маршрут / пароль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...