nodejs完整登陆交互

作者:短工邦技术部 - 陈文哲

nodejs入门之后,其实和其它服务端语言的使用逻辑是类似,需要什么就找什么资料就行了。前面的章节主要是各个组件的使用方法,这次联合起来做一个登陆的交互,因为空闲时间不多,我就直接从项目中抽取最简洁的代码贴出来了,可能会报错哦。

前端代码

form(method='POST' action='/Account/login')
    p账号:
    input(type='text' name='UserName')
    p密码:
    input(type='password' name='Password')
    input(type='submit' value='登录')
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

点击登录后,会把表单数据POST到/Account/login,所以我们要新建一个ROUNT来处理这个表单数据

ROUNT代码

//在server.js处理请求
//var app = express();
var accountROUTE = require('./ROUTE/AccountROUTE')
app.post('/Account/login',accountROUTE.login)
 
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

在ROUNT目录下新建AccountROUTE.js,代码如下

exports.login = function(req,res){
  var User = req.body;  //见body-parser段落
  if(User.UserName && User.Password) {
    //findByKeyValue见UserMODEL
    userMODEL.findByKeyValue({"UserName":User.UserName}, function(err,result) {
      if( result.length <= 0 ) {
        //"不存在该用户"
        }
      else{
        if(User.Password != result[0].Password){
           //"密码错误"
        }
        else{
          req.session.user = result[0];//见session段落
          //登陆成功
        }
      }
    });
  }
  else{
    //"请填完所有信息项",res);
  }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

body-parser

简单说,这个可以把前端POST过来的表单数据直接转换到req.body,是一个JSON对象,Key值就是前端的name,Value值就是前端的value

//安装
npm install body-parser
 
 
  • 1
  • 2
  • 1
  • 2
//在服务入口端server.js新增代码
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
 
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

UserMODEL

//完整的MODEL代码
var Schema = require('mongoose').Schema;
var MODEL = Schema({
    UserName: String,
    Password: String, 
    Type: String,
    Name: String,
    Phone: String,
    CompanyName: String,
    Intro: String,
    meta:{
        createdAt:{
            type:Date,
            default:Date.now()
        },
        updatedAt:{
            type:Date,
            default:Date.now()
        }
    }
}, {collection: "User"});
//定义该MODEL的能提供的数据操作
MODEL.statics = {
    //KeyValue是一个JSON对象,可以根据需求自由传入
    findByKeyValue : function( KeyValue, cb ) {
        return this.find(KeyValue).exec( cb );
    }
};
//每一次保存之前会调用这个方法;
MODEL.pre("save",function(next) {
    if(this.isNew){
        this.meta.createdAt = this.meta.updatedAt = Date.now();
    }
    else{
        this.meta.updatedAt = Date.now();
    }
    next();
});

/* global db */
module.exports = db.model('UserMODEL', MODEL);
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

session

npm install cookie-parser
 
 
  • 1
  • 1
var session = require("express-session");
var cookieParser = require('cookie-parser');
app.use(cookieParser());
//内存存储方式使用session
app.use(session({
    secret : "mysecret",
    cookie: {maxAge: 8000000 },  //8000s后session和相应的cookie失效过期
    resave: false,
    saveUninitialized: true,
}));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值