• 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;
  • 相关阅读:
    C# 通过 probing 指定 dll 寻找文件夹
    C# 通过 probing 指定 dll 寻找文件夹
    WPF 一个性能比较好的 gif 解析库
    WPF 一个性能比较好的 gif 解析库
    PowerShell 通过 WMI 获取系统安装的驱动
    PowerShell 通过 WMI 获取系统安装的驱动
    win10 uwp 好看的时间选择控件
    PHP ftp_ssl_connect() 函数
    PHP ftp_size() 函数
    PHP ftp_site() 函数
  • 原文地址:https://www.cnblogs.com/absoluteli/p/14124457.html
Copyright © 2020-2023  润新知