nodejs中实现用户注册路由功能


Posted in NodeJs onMay 20, 2019

 经过前面几次的学习,已经可以做下小功能,今天要实现的是用户注册路由。

一、users_model.js  功能:定义用户对象模型

var mongoose=require('mongoose'),
   Schema=mongoose.Schema;
var UserSchema=new Schema({
   username:{type:String,unique:true},
   email:String,
   color:String,
   hashed_password:String
});
mongoose.model('User',UserSchema);

二、users_controller.js  功能:为Express服务器实现用户注册的路由

var crypto=require('crypto');
var mongoose=require('mongoose'),User=mongoose.model('User');
function hashPW(pwd){
  return crypto.createHash('sha256').update(pwd).
  digest('base64').toString();
}
//实现用户注册路由
exports.signup=function(req,res){
var user=new User({username:req.body.username});
user.set('hashed_password',hashPW(req.body.password));
user.set('email',req.body.email);
user.save(function(err){
  if(err){
    res.session.error=err;
    res.redirect('/signup');
  }else{
    req.session.user=user.id;
    req.session.username=user.username;
    req.session.msg='Authenticated as '+user.username;
    res.redirect('/');
  }
});
};

三、signup.html 用户注册页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
<link rel="stylesheet"type="text/css" href="/static/css/styles.css" rel="external nofollow" />
</head>
<body>
 <div class="form-container">
 <p class="form-header">注册</p>
 <form method="POST" >
  <label>用户名:</label>
   <input type="text" name="username"><br>
   <label>密码:</label>
   <input type="password" name="password"><br>
   <label>Email:</label>
   <input type="email" name="email"><br>
   <input type="submit" value="注册">
 </form>
 </div>
 <hr> <%=msg %>
</body>
</html>

四、routes.js 功能:为Express服务器实现处理Web请求路由

var crypto=require('crypto');
var express=require('express');
module.exports=function(app){
  var users=require('./controllers/users_controller');
  app.use('/static',express.static('./static')).
  use('/lib',express.static('../lib')
);
app.get('/signup',function(req,res){
  if(req.session.user){
    res.redirect('/');
  }
  res.render('signup',{msg:req.session.msg})
});
app.post('/signup',users.signup);

页面效果

nodejs中实现用户注册路由功能

数据库显示

nodejs中实现用户注册路由功能

总结

以上所述是小编给大家介绍的nodejs中实现用户注册路由功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 #NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 #NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 #NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 #NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 #NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 #NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 #NodeJs
You might like
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python celery原理及运行流程解析
2020/06/13 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
Django中ORM的基本使用教程
2020/12/22 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
一年级数学教学反思
2014/02/01 职场文书
周一问候语大全
2015/11/10 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
react国际化react-intl的使用
2021/05/06 Javascript