Не удается получить cookie в промежуточном программном обеспечении с узлом и угловым - PullRequest
0 голосов
/ 30 июня 2018

Я использую nodejs, express, cookie-parser и angular 6. Сейчас angular запускается в http://localhost:4200 и node / express в http://localhost:3000. Я тоже поставил

const cors = require('cors');
app.use(cors());

в моем app.js в узле, так что угловой и узел могут связываться.

В моем маршруте входа в систему я создаю файл cookie только для http с токеном, а затем отправляю обратно JSON с некоторой информацией и идентификатором пользователя

res.cookie("SESSIONID", token, {httpOnly:true, secure:true});
res.json({ success:true, msg:'you are logged in', userid: resolved.id});

Я полагаю, что файл cookie SESSIONID отправляется с каждым запросом обратно на сервер, поэтому мне не нужно устанавливать его перед каждым запросом

В моем промежуточном программном обеспечении я хочу получить токен из куки, чтобы проверить его. Итак, я делаю

const token = req.cookies.SESSIONID;
console.log('token from validate : ', token);
//check token and expiration, either next(); or redirect back

в моих маршрутах у меня есть

router.get('cms/account', myMiddleware.required(), (req, res)=>{
  res.json({ msg:'profile data'});  
});

Мой профиль сервиса связывается с учетной записью маршрута узла

import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { map } from "rxjs/operators";

@Injectable({
  providedIn: 'root'
})
export class ProfileService {

  constructor(private http:Http) { }
  getProfile(){    
    return this.http.get('http://localhost:3000/cms/account').pipe(map(res => res.json()));
  }
}

мой сервис профилей должен отображать некоторые данные профиля

import { Component, OnInit } from '@angular/core';
import { ProfileService } from '../../services/profile.service';

@Component({
  selector: 'app-profile',
  templateUrl: './profile.component.html',
  styleUrls: ['./profile.component.css']
})
export class ProfileComponent implements OnInit {

  constructor(    private profileService: ProfileService) { }

  ngOnInit() {
    this.profileService.getProfile().subscribe((data) =>{
      console.log('profileService -- ', data);
    })

  }
}

После того, как я войду, я перехожу на http://localhost:4200/cms/profile. В консоли вижу token from validate : undefined

Так что я уверен, что angular успешно достигает промежуточного программного обеспечения для проверки, но не может получить cookie.

Я не понимаю, почему cookie там нет. Это мой синаткс? Разве это не установлено в начале? Должен ли я включать его в каждый запрос? Это разные порты в localhost? Я дал как можно больше подробностей, если вам нужно больше, просто скажите мне. Пожалуйста, помогите мне отладить это, потому что я потерян.

Спасибо

...