Nodejs后台管理员登录实例

思路:
直接访问后台页面时如果无session则跳转到404
当在登录页的表单提交时对数据库进行匹配,匹配成功生成session,否则提示用户名或密码错误
准备页面 :后台首页、登录页、404页,
步骤:
1、初始化项目session
2、打通路口
3、连接数据库
4、表单配对
5、session判断
核心代码:
未登录情况下访问后台首页会跳转至404页面
后台页面的js判断:
$(document).ready(function() {
//未登陆自动跳转到登陆页
if (sessionStorage.getItem("admin") !== "1") {
location.href = "/admin/404/";
}
登录成功后调整到后台首页并生成session,表单提交的js判断
$(document).ready(function() {
//登录表单文本框装饰效果
$('.g-inputTxt').click(function(){
$('.g-inputTxt').removeClass('g-inputTxt-focus');
$(this).addClass('g-inputTxt-focus');
});
});
var verifyCode = new GVerify("v_container");
function ck(){
var username = $('#username').val();
var password = $('#password').val();
var yzm=verifyCode.validate($("#code_input").val());
var result="";
//如果用户名为空
if (username == "") {
$('.loginmsg').text("用户名不为空!");
$('.loginmsg').show();
return false;
}
//如果密码为空
if (password == "") {
$('.loginmsg').text("密码不为空!");
$('.loginmsg').show();
return false;
}
if(!yzm){
$('.loginmsg').text("验证码不正确!");
$('.loginmsg').show();
return false;
}
//传递表单数据
$.ajax({
url:'/admin/logincheck',
type:"post",
data:{
username:username,
password:password
},
async: false,
success:function(flag){
result=flag;
}
});
//根据返回结果判断
if(result=="0"){
$('.loginmsg').text("用户名或密码错误!");
$('.loginmsg').show();
return false;
}else{
sessionStorage.setItem("admin","1");
location.href="/admin/";
return false;
}
}
数据库查询部分
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var userModel = mongoose.model('user');
/* 后台首页 */
router.get('/admin/', function(req, res, next) {
res.render('admin', { title: '后台首页' });
});
/* 检查页 */
/*登录*/
router.post('/admin/logincheck',function(req,res,next){
var username=req.body.username;
var password=req.body.password;
var cond = {
$and:[
{username:username},
{password:password}
]
}
userModel.findOne(cond,function(err,doc){
if(doc==null){
res.send("0");
console.log("登录失败");
}else{
res.send("1");
console.log("登录成功");
}
});
});
module.exports = router;
user管理员表增加管理员测试登录
----------------------------------------
var user={"username":"admin","password":"123456"}
db.users.insert(user);
Nodejs后台管理员登录实例的更多相关文章
- ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析
需求: 在公司新的系统里面博主我使用的是ApachShiro 作为安全框架.作为后端的鉴权以及登录.分配权限等操作 管理员的信息都是存储在管理员表 前台App 用户也需要校验用户名和密码进行登录.但是 ...
- 修改 wordpress 后台管理员登录地址
拷贝根目录下的 wp-login.php文件命名为wp-login.php.backup,把原文件重命名为managewp.phpsed -i "s/wp-login.php/managew ...
- SpringSecurity实现后台管理员登录(二)
需求:login.ftl页面中登录成功后进入index.ftl页面中 一.pom.xml中添加json转换相关的包 <dependency> <groupId>com.fast ...
- Spring Security实现后台管理员登录(一)
一.实现功能 二.数据表设计 为了测试方便,这里创建一个简单的数据表,只含有name和password两个字段.至于角色,权限等,这里都先不考虑. 插入一条数据,name为admin,password ...
- discuz管理员登录进入后台管理马上跳转到登录界面
昨天尝试了一下这个discuz论坛,感觉还可以.今天刚刚用管理员账户进入后台管理,准备改一改界面熟悉一下,过不了10秒钟.老是马上就退出来了.我想起来了,昨天是在阿里云服务器上面直接登录这个管理员账号 ...
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- 学用MVC4做网站六后台管理:6.1.1管理员登录、6.1.2退出
1.管理员登录 在6.1中已添加控制器[AdministratorController] 在控制器中添加[Login()]action,用来显示登录页面 /// <summary> /// ...
- 我的第一个python web开发框架(14)——后台管理系统登录功能
接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...
随机推荐
- 双线程 线性dp 传纸条
/* 两种做法:一是暴力dp[i][j][k][l] 二是以走的步数k作为阶段, dp[k][i][j]表示走到第k步,第一个人横坐标走到i,第二个人横坐标走到j 可以以此推出第第一个人的坐标为[i, ...
- hdu3436 splaytree树模拟队列+离散化缩点
数据较大,需要先把每个top不会操作到的段缩成一个点,记录其开始和结束的位置,和top能操作到的点一起建立一颗伸展树模拟 然后就是普通的队列模拟操作 /* 不会被top操作到的区间就缩点 通过spla ...
- mysql中delete from in子查询删除失败
遇到一个情况,想通过表1的id找到表2,删除表2中barcode关联的库存数据,然后一直不能失败,如下: delete from 库存表 where BARCODE in( select BARCOD ...
- 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符
学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...
- Zbrush Topogun 备忘
====Zbrush==== 1.按住shift 在空白地方移动鼠标左键 就会去到正交视图 2.shift+F可以看一下布线的情况 3.按住shift 点一下画布,松开shift键,就可以旋转画布 4 ...
- mongosync同步1,oplog同步会读取其他集合同步
使用mongosync同步数据 注意: 我下面的这个mongodb版本较低(3.2.16), 还可以用这个工具来同步数据.工具不支持更高版本的mongodb了. 使用方法: https://g ...
- 多线程中使用CheckForIllegalCrossThreadCalls = false访问窗口
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false publi ...
- python函数式编程——偏函数
当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单. import functools def te ...
- Django ORM OneToOneField
一对一关系 一对一关系与多对一关系非常相似.如果你在模型中定义一个OneToOneField,该模型的实例将可以通过该模型的一个简单属性访问关联的模型. class Person(models.Mod ...
- 097实战 关于ETL的几种运行方式
一:代码部分 1.新建maven项目 2.添加需要的java代码 3.书写mapper类 4.书写runner类 二:运行方式 1.本地运行 2.集群运行 3.本地提交集群运行 三:本地运行方式 1. ...