我搜索了这个主题,但没有找到直接的答案,我只是在学习如何使用Express和Node JS和Angular制作用户登录系统,我需要添加一些页面有角度的,有人可以向我解释该怎么做以及应该使用哪些模块? 这是我的Express JS代码
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var session = require('express-session');
var passport = require('passport');
var expressValidator = require('express-validator');
var LocalStrategu = require('passport-local').Strategy;
var multer = require('multer');
var upload = multer({dest: './uploads'});
var flash = require('connect-flash');
var mongo = require('mongodb');
var mongoose = require('mongoose');
var db = mongoose.connection;
var jade = require('jade');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//Handel sessions
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: true
}));
//Passport
app.use(passport.initialize());
app.use(passport.session());
//Validator
app.use(expressValidator({
erorrFormatter: function(param, msg, value){
var namespace = param.split('.');
var root = namespace.shift();
var formOaram = root;
while(namespace.length){
formParam += '[' + namespace.shift() + ']';
}
return{
param : formParam,
msg : msg,
value : value
};
}
}));
app.use(require('connect-flash')());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
app.listen(3000,function(){
console.log('server is running on port 3000')
});
答案 0 :(得分:0)
首先,对体系结构提出建议。我建议只将Web服务调用表示为api堆栈。然后,您可以构建一个使用Web服务的有角度的应用程序。您可以将角度代码推送到公用文件夹中,但是我会将UI与API分离。您已经使用jade作为默认视图引擎设置了Express js应用程序。您可以使用它并在其中推送角度代码。只要包含脚本,就可以了。
现在,要登录,您将需要Passportjs-根据您计划进行身份验证的方式,您将选择一种策略。例如,应使用本地策略对您自己的用户表进行身份验证。还有其他针对FB,Google等进行oauth的策略。
要使用Angular6创建独立的UI应用程序,请安装angular / cli并创建并运行项目。您可以使用此角度项目中的REST api调用。该登录将是这样的呼叫。