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开发环境配置与使用
Nov 17 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
php 判断数组是几维数组
2013/03/20 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
python复制文件代码实现
2013/12/23 Python
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
import的本质解析
2017/10/30 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
给老婆的婚前保证书
2014/02/01 职场文书
个人求职信范文
2014/05/24 职场文书
新生开学寄语大全
2015/05/28 职场文书
老乡会致辞
2015/07/28 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android