nodejs实现用户登录路由功能

经过前面几次的学习,已经可以做下小功能,今天要实现的事用户登录路由。

一、users_model.js  功能:定义用户对象模型

var mongoose=require('mongoose'),
   Schema=mongoose.Schema;
var UserSchema=new Schema({
   username:{type:String,unique:true},
   email:String,
   color:String,
   hashed_password:String
});
mongoose.model('User',UserSchema);

二、users_controller.js  功能:为Express服务器实现用户登录路由

var crypto=require('crypto');
var mongoose=require('mongoose'),User=mongoose.model('User');
function hashPW(pwd){
  return crypto.createHash('sha256').update(pwd).
  digest('base64').toString();
}
//实现用户登录路由
exports.login=function (req,res){
  User.findOne({username:req.body.username})
  .exec(function(err,user){
    if(!user){
      err='User Not Found';
    }else if(user.hashed_password===hashPW(req.body.password.toString())){
      req.session.regenerate(function(){
        req.session.user=user.id;
        req.session.username=user.username;
        req.session.msg='Authenticated as ' +user.username;
        res.redirect('/');
      });
    }else{
      err='Authentication failed. ';
    }
    if(err){
      req.session.regenerate(function(){
        req.session.msg=err;
        res.redirect('/login');
      });
    }
  });
};

三、login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<link rel="stylesheet"type="text/css" href="/static/css/styles.css" rel="external nofollow" />
</head>
<body>
<div class="form-container">
 <p class="form-header">登录</p>
 <form method="POST" >
  <label>用户名:</label>
   <input type="text" name="username"><br>
   <label>密码:</label>
   <input type="password" name="password"><br>
   <input type="submit" value="登录">
 </form>
 </div>
 <a href="/signup" rel="external nofollow" >注册</a>
 <hr> <%=msg %>
</body>
</html>

四、routes.js 功能:为Express服务器实现处理Web请求路由

var crypto=require('crypto');
var express=require('express');
module.exports=function(app){
  var users=require('./controllers/users_controller');
  app.use('/static',express.static('./static')).
  use('/lib',express.static('../lib')
);
app.get('/login',function(req,res){
  if(req.session.user){
    res.redirect('/');
  }
  res.render('login',{msg:req.session.msg})
});
app.post('/login',users.login);

页面效果

总结

以上所述是小编给大家介绍的nodejs中实现用户登录路由功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • 轻松创建nodejs服务器(4):路由

    服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤. 第一步我们需要先解析出请求URL的路径,我们引入url模块. 我们来给onRequest()函数加上一些逻辑,用来找出浏览器请求的URL路径: 复制代码 代码如下: var http = require("http"); var url = require("url"); function start() {  function onRequest(request, respons

  • 详解NodeJS框架express的路径映射(路由)功能及控制

    我 们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route control章节,route实现了客户端请求的URL的路径映射功能,暂且译为路由或URL映射吧.如果你还是不太理解,相信看完本篇文章将会有些收 获的. 路由(URL映射) Express利用HTTP动作提供了有意义并富有表现力的URL映射API,例如我们可能想让用户帐号的URL看起来像"/user/12"的样子,下面的例子就能实现这样的路由,其中与

  • nodejs开发——express路由与中间件

    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出path,一般会默认成"/"(通常由浏览器或其它HTTP客户端完成补充上). 所谓路由,就是如何处理HTTP请求中的路径部分.比如"http://xxx.com/users/

  • nodejs之请求路由概述

    通常来说对于不同的URL请求,服务器应该有不同的反应.我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码.我们需要的所有数据都会包含在request对象中,该对象作为onRequest()回调函数的第一个参数传递.为了解析这些数据,需要调用额外的模块,分别是url和querystring模块.   URL:This  module has utilities for URL resolution and parsing. Call requir

  • nodejs学习笔记之路由

    server.js var http = require("http"); var url = require("url"); function start(route){//route.js 的route方法 //服务实现 function onRequest(request,response){ var pathname = url.parse(request.url.).pathname; route(pathname); // response.writeH

  • nodejs中实现路由功能

    初学Node,发现了与自己之前的观点完全不同的场面--你眼中的JavaScript,是干什么用的呢?特效?or 只是与客户端的交互?可以说,JavaScript最早是运行在浏览器中的,然而你要这样想,浏览器只是你提供了一个上下文(context),它定义了 使用JavaScript可以做什么,这里可以想成类似的一个企业,企业定义了你可以在这里做什么,但是并没有说太多关于JavaScript语言本身可 以做什么.事实上,作为一门完整的语言,JavaScript可以使用在不同的上下文中,体现出不同的

  • 详谈Angular路由与Nodejs路由的区别

    1.觉得angualr.js的路由是针对于单页面的路由,每次路由发生变化,只是页面的状态发生变化,页面本身没有发生跳转 2.express的路由是针对多页面的,也就是说他做的页面,路由的切换是伴随着页面的切换 3.所以建议页面内部的路由变化使用angular.js 的router,而页面间的路由用express 经过我自己的实践,我终于在express环境中把angular跑起来了,简直是哔了狗,俺够啦. 首先,Express的路由是后台的,Angular的路由是前台的就是以前html的各个锚点

  • nodeJS实现路由功能实例代码

    前面的话 本文将使用NodeJS实现较复杂应用的路由功能 结构 项目结构如下 代码如下 功能 [router.js] // 加载所需模块 var http = require('http'); var url = require('url'); var fs = require('fs'); var host = '127.0.0.1'; var port = 8080; http.createServer(function(req,res){ var pathname = url.parse(

  • nodejs实现用户登录路由功能

    经过前面几次的学习,已经可以做下小功能,今天要实现的事用户登录路由. 一.users_model.js  功能:定义用户对象模型 var mongoose=require('mongoose'), Schema=mongoose.Schema; var UserSchema=new Schema({ username:{type:String,unique:true}, email:String, color:String, hashed_password:String }); mongoose

  • nodejs中实现用户注册路由功能

    经过前面几次的学习,已经可以做下小功能,今天要实现的是用户注册路由. 一.users_model.js  功能:定义用户对象模型 var mongoose=require('mongoose'), Schema=mongoose.Schema; var UserSchema=new Schema({ username:{type:String,unique:true}, email:String, color:String, hashed_password:String }); mongoose

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

  • 基于PHP实现用户登录注册功能的详细教程

    教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) <!DOCTYPE html> <html><head> <title>登录</title> <meta name="content-type"; charset="UTF-8"> </head><body> <div

  • Node.js+Express+MySql实现用户登录注册功能

    本文实例为大家分享了Node.js实现用户登录注册的具体代码,供大家参考,具体内容如下 IDE:WebStorm 工程目录: 数据库表 Login.js: /** * Created by linziyu on 2017/7/8. */ /** * express接收html传递的参数 */ var express=require('express'); var app=express(); var mysql=require('mysql'); /** * 配置MySql */ var con

  • Spring security如何实现记录用户登录时间功能

    一.原理分析 spring security提供了一个接口 AuthenticationSuccessHandler,该接口中只有一个方法,用来进行登录成功后的操作 public interface AuthenticationSuccessHandler { /** * Called when a user has been successfully authenticated. * * @param request the request which caused the successfu

  • Spring Cloud Gateway 使用JWT工具类做用户登录校验功能

    1. JWT测试 /** * @Auther: csp1999 * @Date: 2021/01/24/19:29 * @Description: JWT测试 */ public class JwtTest { /** * 创建Jwt令牌: * * JWT = 头部Header + 载荷playload + 签名signature */ @Test public void testCreateJwt() { // 构建jwt令牌 // 1.头部Header: 描述关于该JWT的最基本的信息,例如

  • QT实现用户登录注册功能

    本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下 1.login.h #ifndef LOGIN_H #define LOGIN_H #include <QWidget> namespace Ui { class Login; } class Login : public QWidget {     Q_OBJECT public:     explicit Login(QWidget *parent = 0);     ~Login(); private slot

  • Java struts2 validate用户登录校验功能实现

    首先贴一下搭配的环境: 配置: Eclipse4.3.2 jdk1.7_45 Mysql 5.0+ 然后切入正题: 1.login.jsp 主要是使用OGNL 标签 也可使用html form表单,调用LoginAction.action,以post 方式传输. 在LoginaAction 经过判断,然后会有提示信息,需要用到 <s:fielderror/>来显示. <%@ taglib uri="/struts-tags" prefix="s"%

  • 基于IO版的用户登录注册实例(Java)

    今天学的是用户登录注册功能. 4个包: itcast.cn.user包 User.java 用户类,描述用户基本信息,包括成员变量,无参构造函数,带参构造(可有可无).get和set方法 package itcast.cn.day22; /* * 用户基本描述包类 */ public class User { private int userName; private int passWord; public User(){ super(); } public User(int userName

随机推荐