nodejs完整登陆交互

来源:互联网 发布:linux环境变量作用 编辑:程序博客网 时间:2024/05/21 17:44

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

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

前端代码

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

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

ROUNT代码

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

在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);  }}

body-parser

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

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

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);

session

npm install cookie-parser
var session = require("express-session");var cookieParser = require('cookie-parser');app.use(cookieParser());//内存存储方式使用sessionapp.use(session({    secret : "mysecret",    cookie: {maxAge: 8000000 },  //8000s后session和相应的cookie失效过期    resave: false,    saveUninitialized: true,}));
2 0
原创粉丝点击