var createError = require('http-errors');
var express = require('express');
// 可以記錄登錄信息
var session = require('express-session')
// favicon.ico
var favicon = require('serve-favicon')
// 鏈接數(shù)據(jù)庫(kù)
var db = require('./db/connect')
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
// 導(dǎo)入路由文件
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var articlesRouter = require('./routes/articles');
var app = express();
// 設(shè)置模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
// 解析post請(qǐng)求主體榕订,解析完成以后佣盒,會(huì)把請(qǐng)求主體的參數(shù)都放在req上
// req.body 是一個(gè)對(duì)象,這個(gè)對(duì)象就是解析好的post請(qǐng)求參數(shù)
// username:zhangsan
// password:123456
// req.body = {username:zhangsan,password:123456}
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
// favicon.ico
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
// 配置靜態(tài)資源
app.use(express.static(path.join(__dirname, 'public')));
// 配置session
// 在req上就會(huì)多一個(gè)session屬性蜓堕,是一個(gè)對(duì)象
// 可以在對(duì)象里面寫入信息
// 請(qǐng)求會(huì)自動(dòng)攜帶
app.use(session({
? secret: 'sz2111a',
? resave: false,
? saveUninitialized: true,
? cookie: {
? ? maxAge:60*60*1000
? }
}))
app.use('/users', usersRouter); // 用戶業(yè)務(wù)子路由
// 鑒權(quán)
app.all('*',function(req,res,next){
? if(req.url!='/login'&&req.url!='/regist'){
? ? ? if(req.session.isLogin){
? ? ? ? next()
? ? ? }else{
? ? ? ? res.redirect('/login')
? ? ? }
? }else{
? ? ? next()
? }
})
// 使用子路由
app.use('/', indexRouter);? // 模板子路由
app.use('/articles', articlesRouter); // 文章業(yè)務(wù)子路由
// 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;