node.js简短周结
2021/8/1 9:05:59
本文主要是介绍node.js简短周结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
node.js实现注册,登录页面
- app.js模块
var express = require('express') var path = require('path') var bodyParser = require('body-parser') var session = require('express-session') var router = require('./router') var app = express() app.use('/public/', express.static(path.join(__dirname, './public/'))) app.use('/node_modules/', express.static(path.join(__dirname, './node_modules/'))) // 在 Node 中,有很多第三方模板引擎都可以使用,不是只有 art-template // ejs、jade(pug)、handlebars、nunjucks // <%%> // {{}} // h1 // div // h1 app.engine('html', require('express-art-template')) app.set('views', path.join(__dirname, './views/')) // 默认就是 ./views 目录 // 配置解析表单 POST 请求体插件(注意:一定要在 app.use(router) 之前 ) // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) // 在 Express 这个框架中,默认不支持 Session 和 Cookie // 但是我们可以使用第三方中间件:express-session 来解决 // 1. npm install express-session // 2. 配置 (一定要在 app.use(router) 之前) // 3. 使用 // 当把这个插件配置好之后,我们就可以通过 req.session 来发访问和设置 Session 成员了 // 添加 Session 数据:req.session.foo = 'bar' // 访问 Session 数据:req.session.foo app.use(session({ // 配置加密字符串,它会在原有加密基础之上和这个字符串拼起来去加密 // 目的是为了增加安全性,防止客户端恶意伪造 secret: 'itcast', resave: false, saveUninitialized: false // 无论你是否使用 Session ,我都默认直接给你分配一把钥匙 })) // 把路由挂载到 app 中 app.use(router) app.listen(5000, function () { console.log('running...') })
- 路由模块
var express = require('express') var User = require('./models/user') var md5 = require('blueimp-md5') var router = express.Router() router.get('/', function (req, res) { // console.log(req.session.user) res.render('index.html', { user: req.session.user }) }) router.get('/login', function (req, res) { res.render('login.html') }) router.post('/login', function (req, res) { // 1. 获取表单数据 // 2. 查询数据库用户名密码是否正确 // 3. 发送响应数据 var body = req.body User.findOne({ email: body.email, password: md5(md5(body.password)) }, function (err, user) { if (err) { return res.status(500).json({ err_code: 500, message: err.message }) } // 如果邮箱和密码匹配,则 user 是查询到的用户对象,否则就是 null if (!user) { return res.status(200).json({ err_code: 1, message: 'Email or password is invalid.' }) } // 用户存在,登陆成功,通过 Session 记录登陆状态 req.session.user = user res.status(200).json({ err_code: 0, message: 'OK' }) }) }) router.get('/register', function (req, res) { res.render('register.html') }) router.post('/register', function (req, res) { // 1. 获取表单提交的数据 // req.body // 2. 操作数据库 // 判断改用户是否存在 // 如果已存在,不允许注册 // 如果不存在,注册新建用户 // 3. 发送响应 var body = req.body User.findOne({ $or: [{ email: body.email }, { nickname: body.nickname } ] }, function (err, data) { if (err) { return res.status(500).json({ success: false, message: '服务端错误' }) } // console.log(data) if (data) { // 邮箱或者昵称已存在 return res.status(200).json({ err_code: 1, message: 'Email or nickname aleady exists.' }) return res.send(`邮箱或者密码已存在,请重试`) } // 对密码进行 md5 重复加密 body.password = md5(md5(body.password)) new User(body).save(function (err, user) { if (err) { return res.status(500).json({ err_code: 500, message: 'Internal error.' }) } // 注册成功,使用 Session 记录用户的登陆状态 req.session.user = user // Express 提供了一个响应方法:json // 该方法接收一个对象作为参数,它会自动帮你把对象转为字符串再发送给浏览器 res.status(200).json({ err_code: 0, message: 'OK' }) // 服务端重定向只针对同步请求才有效,异步请求无效 // res.redirect('/') }) }) }) router.get('/logout', function (req, res) { // 清除登陆状态 req.session.user = null // 重定向到登录页 res.redirect('/login') }) // router.post('/register', async function (req, res) { // var body = req.body // try { // if (await User.findOne({ email: body.email })) { // return res.status(200).json({ // err_code: 1, // message: '邮箱已存在' // }) // } // if (await User.findOne({ nickname: body.nickname })) { // return res.status(200).json({ // err_code: 2, // message: '昵称已存在' // }) // } // // 对密码进行 md5 重复加密 // body.password = md5(md5(body.password)) // // 创建用户,执行注册 // await new User(body).save() // res.status(200).json({ // err_code: 0, // message: 'OK' // }) // } catch (err) { // res.status(500).json({ // err_code: 500, // message: err.message // }) // } // }) module.exports = router
这篇关于node.js简短周结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程
- 2024-12-20Vue3入门教程:从零开始搭建你的第一个Vue3项目
- 2024-12-20从零开始学习vueRouter4:基础教程
- 2024-12-20Vuex4课程:新手入门到上手实战全攻略