У меня есть express бэкэнд, который использует express -сессии. У меня есть angular интерфейс, который не связан с сервером. Каждый раз, когда мой веб-интерфейс отправляет запрос express -сессии, создается новый сеанс. Я не могу понять, почему. Я думаю, что проблема может заключаться в том, что angular не отправляет повара ie обратно. Я не вижу куки в заголовках req на вкладке chrome network. Я не знаю, почему angular сделал бы это или даже его проблема. Любая помощь будет высоко ценится! Ниже приведен соответствующий код
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
import {HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http';
import {FormsModule} from '@angular/forms';
import { NavbarComponent } from './navbar/navbar.component';
import { SignUpComponent } from './sign-up/sign-up.component';
import { LogInComponent } from './log-in/log-in.component';
import { WithCredentialsInterceptorService } from './with-credentials-interceptor.service';
@NgModule({
declarations: [
AppComponent,
NavbarComponent,
SignUpComponent,
LogInComponent
],
imports: [
BrowserModule,
AppRoutingModule,
NgbModule,
FormsModule,
HttpClientModule
],
providers: [{provide : HTTP_INTERCEPTORS, useClass : WithCredentialsInterceptorService,
multi : true}],
bootstrap: [AppComponent]
})
export class AppModule { }
angular перехватчик
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
@Injectable()
export class WithCredentialsInterceptorService implements HttpInterceptor{
intercept(req : HttpRequest<any>, next : HttpHandler){
let modifiedReq = req.clone({headers : req.headers.set('withCredentials', 'true')});
console.log(req.headers.get('cookie'));
return next.handle(modifiedReq);
}
constructor() { }
}
app. js
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const corsOptions = {
credentials : true
};
const session = require('express-session');
const mongoDbStore = require('connect-mongodb-session')(session);
const store = new mongoDbStore({
uri : 'mongodb+srv://Shlomo:Shizam11192@cluster0-32bfg.mongodb.net/test?retryWrites=true&w=majority',
databaseName : 'test',
collection : 'sessions'
},error=>{
if(error){
console.log(error);
}
});
const authRoutes = require('./routes/authRoutes');
app.options('*', cors(corsOptions));
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.use(session({
secret : 'You are doing great Shlo!!!',
resave : false,
saveUninitialized : true,
cookie : {
maxAge : 3600000,
secure : false,
httpOnly : false
}
}));
app.use(authRoutes);
mongoose.connect('mongodb+srv://@cluster0-32bfg.mongodb.net/test?
retryWrites=true&w=majority')
.then(()=>{console.log('mongoose connected!')});
app.listen(process.env.PORT || 3000, ()=>{
console.log('Listening!!! Keep it up Shlo!!!');
});
auth маршруты
router.get('/', (req,res,next) =>{console.log(req.session.id);res.json({message :
'whatever'})});
˚