mongodb做一个简单的注册登录效果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mongodb做一个简单的注册登录效果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5035字,纯文字阅读大概需要8分钟。
内容图文
![mongodb做一个简单的注册登录效果](/upload/InfoBanner/zyjiaocheng/478/075145580e8a406aa632a8fe5075a81d.jpg)
作为一个初学者,做这个例子的时候我也是遇到了很多问题,在查看了一些大牛的解答,终于实现了这个简单的效果,下面我来分享这个源代码,以及其中我所遇到的问题
这是在nodejs环境下作的一个实例,用到了jade,express,mongodb这几个主要的模块
layout.jade文件
doctype 5
html
head
title Mongodb example
body
h1 my first mongodb app
hr
block content
index.jade文件
extends ../layout
block content
if (authenticated)
p welcome back, #{me.first}
a(href="/logout") logout
else
p welcome new visitor
ul
li
a(href="/login") login
li
a(href="/signup") signup
login.jade文件
extends ../layout
block content
form(action="/login",method="POST")
fieldset
legend Log in
if(signupEmail)
p congratulations on signup!pleasel login below
p
label email
input(name="user[email]",type="text",value=signupEmail)
p
label password
input(name="user[password]",type="password")
p
button submit
p
a(href="/")go back
signup.jade文件
extends ../layout
block content
form(action="/signup",method="POST")
fieldset
legend Sign up
p
label first
input(name="user[first]",type="text")
p
label last
input(name="user[last]",type="text")
p
label email
input(name="user[email]",type="text")
p
label password
input(name="user[password]",type="password")
p
button submit
p
a(href="/") go back
server.js文件
var express = require(‘express‘);
var app = express.createServer();
var ObjectId = require(‘mongodb‘).ObjectID;
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret:‘my secret‘}));
app.use(function(req,res,next){//这个中间件一定要放在前面,放到定义的路由后面就没起作用了,这是身份验证中间件,特别注意匹配数据库_id时要先把得到的id字符串转换为ObjectId对象ObjectId(req.session.loggedIn)
if(req.session.loggedIn)
{
//console.log(1);
res.local(‘authenticated‘,true);
app.users.findOne({_id:ObjectId(req.session.loggedIn)},function(err,doc){
if(err) return next(err);
// console.log(doc);
res.local(‘me‘,doc);
next();
})
}else
{
res.local(‘authenticated‘,false);
res.local(‘signupEmail‘,false);
next();
}
})
app.set(‘views‘,‘./views/pages‘);
app.set(‘view engine‘,‘jade‘);
app.set(‘view options‘,{layout:false});
app.get(‘/‘,function(req,res){//定义首页路由
res.render(‘index‘/*,{authenticated:false}*/);
})
app.get(‘/login‘,function(req,res){//定义登录页面路由
res.render(‘login‘);
})
app.get(‘/login/:id‘,function(req,res){//登录路由,应用于刚注册后
res.render(‘login‘,{signupEmail:req.params.id});
})
app.post(‘/login‘,function(req,res){//处理登录路由
app.users.findOne({email:req.body.user.email,password:req.body.user.password},function(err,doc){
if(err) return next(err);
if(!doc) return res.end(‘user not find ,go back and try again‘);
//console.log(doc);
req.session.loggedIn = doc._id.toString();
//console.log(req.session.loggedIn);
res.redirect(‘/‘);
})
})
app.get(‘/logout‘,function(req,res){//登出出来
req.session.loggedIn = null;
res.redirect(‘/‘);
})
app.get(‘/signup‘,function(req,res,next){//注册路由
res.render(‘signup‘)
})
app.post(‘/signup‘,function(req,res,next){//处理注册路由
app.users.insert(req.body.user,function(err,doc){
//console.log(req.body.user)
//console.log(doc);
/*doc的内容{ result: { ok: 1, n: 1 },
ops:
[ { first: ‘66‘,
last: ‘77‘,
email: ‘88‘,
password: ‘99‘,
_id: 58d1248a72b183070d1cf678 } ],
insertedCount: 1,
insertedIds: [ 58d1248a72b183070d1cf678 ] }
*/
if(err) return next(err);
res.redirect(‘/login/‘+doc.ops[0].email);
})
})
var mongodb = require(‘mongodb‘).Db;
var server = require(‘mongodb‘).Server;
var db = new mongodb(‘my-website‘,new server(‘127.0.0.1‘,27017));//连接数据库
db.open(function(err,client){
if(err) throw err;
console.log(‘connected to mongodb‘);
app.users = db.collection(‘users‘);//创建一个集合名为users
client.ensureIndex(‘users‘,‘email‘,function(err){
if(err) throw err;
client.ensureIndex(‘users‘,‘password‘,function(err){
if(err) throw err;
console.log(‘ensured index‘);
app.listen(3000,function(){
console.log(‘app listening on 3000‘);
})
})
})
})
//app.listen(3000);
自己需要安装mongodb和nodejs,这个到相应的官网很容易下到的!
mongodb做一个简单的注册登录效果
标签:cookie result 初学 登录 render open parse form orm
本文系统来源:http://www.cnblogs.com/li0311kun/p/6602150.html
内容总结
以上是互联网集市为您收集整理的mongodb做一个简单的注册登录效果全部内容,希望文章能够帮你解决mongodb做一个简单的注册登录效果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。