ホームページ >ウェブフロントエンド >jsチュートリアル >ログイン登録機能コードの実装(Node.js+Express+MongoDB)
この記事では主に Node+Express+MongoDB のログインと登録機能を紹介しますので、必要な方は参考にしてください
MongoDB の依存関係を注入します
var mongoose = require("mongoose");
フォーム処理が必要なため、bodyParser ミドルウェアは必要です
bodyParser モジュールはファイル解析を行い、フォーム内のデータをフォーマットします
var bodyParser = require("body-parser"); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));
ログイン後にユーザー情報を保存するには、cookieParser ミドルウェアに依存するセッションミドルウェアを使用する必要があります
var cookieParser = require('cookie-parser'); var session = require('express-session'); ar mongoStore = require('connect-mongo')(session); var dbUrl = 'mongodb://localhost/express'; app.use(cookieParser()); app.use(session({ secret:'express', store: new mongoStore({ url: dbUrl, collection: 'sessions' }) }));
jade を使用しますテンプレート
ルーティングの設定
登録ページにログイン
doctype html html head meta(charset='utf-8') title #{title} include ./includes/head body include ./includes/header block content
登録機能
link(href='css/main.css', rel='stylesheet') link(href="/libs/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" , rel="stylesheet") script(src="/libs/jquery/dist/jquery.min.js") script(src="/libs/bootstrap/dist/js/bootstrap.min.js")
ログイン機能
.container .row .page-header h1 #{title} .navbar.navbar-default.navbar-fixed-bottom .container if user p.navbar-text.navbar-right span 欢迎你,#{user.name} span | a.navbar-link(href="/layout" rel="external nofollow" ) 退出登录 else p.navbar-text.navbar-right a.navbar-link(href="/signup" rel="external nofollow" , data-toggle="modal", data-target="#signupModal") 注册 span | a.navbar-link(href="/login" rel="external nofollow" , data-toggle="modal", data-target="#signinModal") 登录
ログアウト
include ../layout block content form.form-horizontal( role="form", method="POST", action='/user/signup') .form-group label.col-sm-2.control-label(for="signupName") 用户名 .col-sm-10 input#signupName.form-control(type="text", name="user[name]", placeholder="输入用户名") .form-group label.col-sm-2.control-label(for="signuppassword") 密码 .col-sm-10 input#signuppassword.form-control(type="password", name="user[password]", placeholder="输入密码") .form-group label.col-sm-2.control-label(for="signupemail") 邮箱 .col-sm-10 input#signupemail.form-control(type="email", name="user[email]", placeholder="输入邮箱") .form-group .col-sm-offset-2.col-sm-10 button.btn.btn-default(type="submit") 完成注册
登録されたデータベース操作
データベースに接続
// 注册页面 app.get('/signup', function (req,res) { res.render('signup', { title: '注册' }); }); // 登录页面 app.get('/login', function (req,res) { res.render('login', { title: '登录' }); });
スキーマ定義
データの更新と検索、およびパスワードソルティング
// 注册表单 app.post('/user/signup', function (req,res) { var _user = req.body.user; User.findOne({name:_user.name}, function (err, user) { if(err){ console.log(err); } if(user) { return res.redirect('/login'); } else { var user = new User(_user); user.save(function (err, user) { if(err){ console.log(err); res.redirect('/signup'); } console.log('注册成功——用户名:' + user); res.redirect('/login'); }); } }); });
rrreええモデルコンピレーションモデル
// 登录表单 app.post('/user/login', function (req,res) { var _user = req.body.user; var name = _user.name; var password = _user.password; User.findOne({name:name}, function (err, user) { if(err){ console.log(err); } if(!user) { return res.redirect('/signup'); } user.comparePassword(password, function (err, isMatch) { if (err){ console.log(err); } if (isMatch) { req.session.user = user; // 用户名存入session中 console.log('登录成功——用户名: ' + user); return res.redirect('/'); } else { return res.redirect('/lgoin'); } }); }); });
エントリファイルインジェクション
app.get('/layout', function(req,res){ delete req.session.user; //delete app.locals.user; // 删除全局变量user,否则点击退出登录,页面无变化 res.redirect('/'); });認証ミドルウェア
りー
以上がログイン登録機能コードの実装(Node.js+Express+MongoDB)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。