zoukankan      html  css  js  c++  java
  • Node.js--登录示例

    const jwt=require('jsonwebtoken'); 
    const jwtKoa=require('koa-jwt');
    const util=require('util'); 
    const verify=util.promisify(jwt.verify);
    const secret='jwt demo';
    
    /*var userModel=require("../public/mongo/users");*/
    
    route.post('/login',async function(ctx,next){
        ctx.type="application/json";
        if(ctx.cookies.get('accessToken')){
            console.log("if(ctx.cookies.get('accessToken')){"+ctx.cookies.get('accessToken'));
            ctx.body ={
                loginSccseeful:true,
                username:ctx.request.body.username,
                token:ctx.cookies.get('accessToken')
            };
            return;
        }
        else
         {
            try{
                //console.log(ctx.header);
    
                var user=await userModel.find({name: ctx.request.body.username});
                if (user.length == 0) {
                    console.log("user not register")
                    ctx.body = "user not register";
                }
                else {
                    let user=await userModel.find({
                        name: ctx.request.body.username,
                        password: ctx.request.body.password
                    });
                        if (user == null || user.length == 0) {
                            console.log('password wrong');
                            //ctx.response.body = "login fail";
                            ctx.body = "login fail";
                        }
                        if (user != null && user.length > 0) {
                            /*Token*/
                            const userToken={name:ctx.request.body.username};
                            const token="sssss";
                           // const token=jwt.sign(userToken,secret,{expiresIn:'30s'})//
                            console.log("token: "+token);
                            /*var exp = new Date();
                            exp.setTime(exp.getTime() + 60 * 2000);//过期时间 2分钟*/
                            ctx.cookies.set("accessToken",token,{maxAge:2*60*60});//为什么maxAge要比正常事件设长这么久
                            console.log(ctx.cookies.get('accessToken'));
                            console.log('login sccessful');
                            //ctx.body = "login successful";
                            //ctx.response.body = "login successful";
                            if(ctx.request.body.remember==true){
                                await ctx.cookies.set("suki","123456",{maxAge:14*24*3600, httpOnly:
    true});
                                console.log(ctx.cookies.get('suki'));
                               // ctx.redirect('/signin');
                            }
    
                            //ctx.body ="ok";
                            ctx.body ={
                                    loginSccseeful:true,
                                    username:ctx.request.body.username,
                                    token:token
                            };
                            console.log(ctx.type);
                        }
                    }
    
            }catch(e){
                console.log(e.err)
            }
        }
    
    })
    
    module.exports = route;
  • 相关阅读:
    什么是工厂模式
    冒泡算法
    CSS中的绝对定位与相对定位
    JS function立即调用的几种写法
    paip.java 线程无限wait的解决
    paip.java 多线程参数以及返回值Future FutureTask 的使用.
    PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束
    paip.slap工具与于64位win7与JDBC的性能对比
    JProfiler8 注册码序列号
    paip.提升性能---mysql 优化cpu多核以及lan性能的关系.
  • 原文地址:https://www.cnblogs.com/absoluteli/p/14124457.html
Copyright © 2011-2022 走看看