Вход в Почтальон сохраняется, но не сохраняется в браузере с Angular - PullRequest
0 голосов
/ 30 января 2019

У меня есть API на node.js, с экспрессом.Этот API регистрирует пользователя. Я использую passsport для аутентификации.

У меня есть два маршрута: / login и / companies.Для начала пользователь должен войти в систему, он получает токены, а я - в систему. После этого он / она должен получить доступ к маршруту / компаниям, однако они должны войти в систему.

Дляпроверить, если пользователь вошел в систему, я использую req.user.Вот код для подтверждения входа пользователя в маршрут / компании:

exports.list = function (req, res, next) {

console.log(req.user);

if (!req.user) {
    return res.status(404).send("Precisa estar logado.");
}
...

Вот настройки моего сервера:

app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
app.set('trust proxy', 1) // trust first proxy
app.use(session({
    secret: 'MotomcoGroupAjm999MOTOMCO',
    resave: false,
    saveUninitialized: true,
    cookie: { httpOnly: false }
}))

// Flash - Gerenciador de mensagens de resposta do servidor.
app.use(flash());
app.use(pass.initialize());
app.use(pass.session());

При выполнении тестов с Почтальоном, я могу получить доступ к / компаниям безпроблемы, но когда я пытаюсь получить доступ, после входа в систему, через браузер, я попадаю в (!req.user).

Это вопрос куки?Однако я пытался использовать при выполнении запроса к серверу с Angular withCredentials, но безуспешно.

Вопрос : Почему сеанс записывается в тесты с Почтальоном, ноне записывается в браузере, когда я тестирую с Angular?Что я забыл сделать на стороне клиента?

1 Ответ

0 голосов
/ 01 февраля 2019

Проблема была с CORS.Вот что я сделал, чтобы решить проблему:

var cors = require('cors');
app.use(cors({origin:true,credentials: true}));

И установите заголовки:

app.use(function (req, res, next) {
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', req.headers.origin);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
    if (req.method === "OPTIONS") {
        return res.status(200).end();
    } else {
        next();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...