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服务器(10):处理POST请求
Dec 18 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 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初学者的8点有效建议
2010/11/20 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
在Python中定义一个常量的方法
2018/11/10 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
Python多线程thread及模块使用实例
2020/04/28 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
Python如何生成xml文件
2020/06/04 Python
python 下划线的不同用法
2020/10/24 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
求职简历的自我评价怎样写好
2013/10/07 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
2019个人工作总结
2019/06/21 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis