用AngularJ和节点处理视图



我有一个问题。在AngularJS中为客户端和服务器端应用程序节点管理视图的正确方法是什么?

我正在开发带有两个HTML文件的登录/寄存器功能的简单聊天应用程序 - 'index.html'带有登录/寄存器表单和'chat.html',并使用聊天窗口等。这样(尚未实现身份验证):

const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io').listen(http);
const path = require('path');
app.use(express.static(path.resolve('../client/')));
app.get('/', function (req, res) {
    res.sendFile(path.resolve('../client/html/index.html'));
});
app.get('/chat', function (req, res) {
    res.sendFile(path.resolve('../client/html/chat.html'));
});

还是Angular?我很困惑。请帮助。

编辑:我还有一个问题。在这里进行身份验证的正确方法是什么?用户数据应通过Angular作为JSON发送到服务器,或者最好在HTML级别上使用'form''元素管理它?

从我所看到的东西来看,您并没有充分利用Angular的水疗中心,因此正确的方法就像以下内容:我可以允许我更改您的代码,就像这个

一样
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io').listen(http);
const path = require('path');
//Serving here your whole public or dist files.
app.use("/", express.static(path.join(__dirname, '../../dist/')));
//Instead of returning pages you return Json data. 
app.get('/chat', function (req, res) {
});

主要想法是仅发送一个index.html文件,该文件将托管您的angularjs代码和前端路线(ng-router/ui-router),一个在所有片段和控制器/fortories旁边...

现在涉及保护您的路线,或主要是因为您需要将快速路线从服务HTML文件切换到服务JSON数据,我们将保护数据roues,没有比使用Passport更好的解决方案并实施那里找到的一种策略。

使用Passport,您可以实现JSON Web令牌和社交登录等,以及将它们添加到您的路线中,您只需以下内容:

app.get('/chat', passport.authenticate('jwt', {
        session: false
}), (req, res) => {
});

它将简单地充当明确的中间件,如果您会发现您的请求obbies您创建的安全规则将通过它或其他情况,或者将为您的403未经授权的响应提供。

我认为这包含您需要的一切。

最新更新