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;
原文地址:https://www.cnblogs.com/absoluteli/p/14124457.html