nodejs控制hexo登录后才可以查看全流程
时间: 2024-01-31 19:04:32 浏览: 104
1. 安装Hexo
在安装Hexo之前,需要先安装Node.js和Git。然后通过以下命令安装Hexo:
npm install -g hexo-cli
2. 创建一个Hexo博客
在本地创建一个新文件夹,然后通过以下命令在该文件夹中创建一个新的Hexo博客:
hexo init my-blog
cd my-blog
npm install
3. 配置Hexo
在Hexo博客的根目录下,有一个_config.yml文件,打开该文件,配置Hexo博客的相关信息,如网站的标题、副标题、作者信息等。
4. 安装Hexo插件
Hexo有很多插件,可以通过插件来扩展Hexo的功能。例如,可以使用hexo-admin插件来实现Hexo后台管理页面的功能。通过以下命令来安装hexo-admin插件:
npm install --save hexo-admin
5. 启动Hexo
在Hexo博客的根目录下,通过以下命令启动Hexo服务器:
hexo server
然后在浏览器中访问http://localhost:4000/,就可以看到Hexo博客的首页了。
6. 添加登录功能
要添加登录功能,需要使用一个用户认证库,例如passport.js。passport.js是一个Node.js的用户认证库,可以用于实现用户的注册、登录、注销等功能。
首先,在Hexo博客的根目录下,通过以下命令安装passport.js:
npm install passport passport-local express-session --save
然后,在Hexo博客的根目录下,创建一个名为passport.js的文件,并添加以下代码:
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
if (username === 'admin' && password === 'password') {
return done(null, {username: username});
} else {
return done(null, false, {message: 'Incorrect username or password.'});
}
}
));
passport.serializeUser(function(user, done) {
done(null, user.username);
});
passport.deserializeUser(function(username, done) {
done(null, {username: username});
});
module.exports = passport;
以上代码创建了一个本地认证策略,如果用户名为admin,密码为password,则认为认证成功。如果认证失败,则返回错误信息。
然后,在Hexo博客的根目录下,创建一个名为login.js的文件,并添加以下代码:
var express = require('express');
var passport = require('./passport');
var router = express.Router();
router.get('/', function(req, res) {
res.render('login');
});
router.post('/', passport.authenticate('local', { failureRedirect: '/login' }), function(req, res) {
res.redirect('/');
});
module.exports = router;
以上代码创建了一个/login的路由,当用户访问/login时,会显示一个登录页面。当用户提交登录信息时,会使用passport.js进行认证,如果认证成功,则跳转到首页;如果认证失败,则返回错误信息。
最后,在Hexo博客的根目录下,创建一个名为app.js的文件,并添加以下代码:
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var passport = require('./passport');
var login = require('./login');
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(session({
secret: 'my secret',
resave: false,
saveUninitialized: false
}));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(passport.initialize());
app.use(passport.session());
app.use('/login', login);
app.get('/', function(req, res) {
if (req.isAuthenticated()) {
res.render('index', { user: req.user });
} else {
res.redirect('/login');
}
});
app.listen(3000, function() {
console.log('App listening on port 3000!');
});
以上代码创建了一个Express应用程序,使用了session、body-parser、passport和login中间件。当用户访问首页时,如果已经认证成功,则显示首页;如果没有认证成功,则跳转到登录页面。
7. 测试登录功能
在Hexo博客的根目录下,通过以下命令启动应用程序:
node app.js
然后在浏览器中访问http://localhost:3000/,会跳转到登录页面。输入用户名admin和密码password,登录成功后会跳转到首页,显示当前用户的信息。如果输入的用户名或密码不正确,则会显示错误信息。
阅读全文