最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Angular app使用快速会话来验证端口3000和端口4200

IT培训 admin 6浏览 0评论

Angular app使用快速会话来验证端口3000和端口4200

使用angular-cli开发角度,

ng serve位于4200号港口node server.js位于3000港口

我想使用快速登录页面登录。

因为cookie和会话是特定于域的。由于端口不同,我可以通过快递页面上的端口3000登录,因为所有登录都是在快递方面完成的。

我如何使用角度应用程序?

Expressjs将无法通过应用程序中的XHR同时接收会话和cookie。

所以访问相同的localhost:3000/api/user路线

在角度内,它的XHR命中渲染302重定向就像没有登录用户但直接访问它,它是200。

app.use(session({
    secret: 'somerandonstuffs',
    resave: true,
    saveUninitialized: false,
    cookie: { maxAge: 60 * 1000, httpOnly: true }
}));

const authUser = (req, res, next) => {
    if (req.session.user && req.cookies['connect.sid']) {
        next();
    } else {
        res.redirect(config.serverHost + '/login');
    }
};

app.route('/login')
    .get((req, res) => {
        res.sendFile(__dirname + '/views/login.html');
    })
    .post((req, res) => {
            req.session.user = {
                id: '[email protected]'
            };
            res.redirect(config.clientHost);
        }
    });

app.all('/*', authUser, function (req, res, next) {
    next();
});

实际上,至少有人可以告诉我,如果共享域(端口)可以使用这种方法吗?

回答如下:

您在4200(仅)上运行Angular CLI服务器进行开发。如果你想使用代理配置命中端口3000 api:

在angular.json中:

    "serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "cleanup:build",
        "proxyConfig": "proxy.conf.json"
      },

并在proxy.conf.json中定义重定向:

{
  "/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": true
  }
}

现在处于常规模式,您使用相同的快速服务器来提供Angular。

   "architect": {
    "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "outputPath": "../express/webapp"

或者您的快速静态目录所在的位置。

Angular app使用快速会话来验证端口3000和端口4200

使用angular-cli开发角度,

ng serve位于4200号港口node server.js位于3000港口

我想使用快速登录页面登录。

因为cookie和会话是特定于域的。由于端口不同,我可以通过快递页面上的端口3000登录,因为所有登录都是在快递方面完成的。

我如何使用角度应用程序?

Expressjs将无法通过应用程序中的XHR同时接收会话和cookie。

所以访问相同的localhost:3000/api/user路线

在角度内,它的XHR命中渲染302重定向就像没有登录用户但直接访问它,它是200。

app.use(session({
    secret: 'somerandonstuffs',
    resave: true,
    saveUninitialized: false,
    cookie: { maxAge: 60 * 1000, httpOnly: true }
}));

const authUser = (req, res, next) => {
    if (req.session.user && req.cookies['connect.sid']) {
        next();
    } else {
        res.redirect(config.serverHost + '/login');
    }
};

app.route('/login')
    .get((req, res) => {
        res.sendFile(__dirname + '/views/login.html');
    })
    .post((req, res) => {
            req.session.user = {
                id: '[email protected]'
            };
            res.redirect(config.clientHost);
        }
    });

app.all('/*', authUser, function (req, res, next) {
    next();
});

实际上,至少有人可以告诉我,如果共享域(端口)可以使用这种方法吗?

回答如下:

您在4200(仅)上运行Angular CLI服务器进行开发。如果你想使用代理配置命中端口3000 api:

在angular.json中:

    "serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "cleanup:build",
        "proxyConfig": "proxy.conf.json"
      },

并在proxy.conf.json中定义重定向:

{
  "/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": true
  }
}

现在处于常规模式,您使用相同的快速服务器来提供Angular。

   "architect": {
    "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "outputPath": "../express/webapp"

或者您的快速静态目录所在的位置。

发布评论

评论列表 (0)

  1. 暂无评论