基於express框架和cookie和session驗證實現登錄註冊

//引入express框架
const express = require('express');
//用來轉換post的信息的
const bodyParser = require('body-parser');
const fs = require('fs');
const urlLib = require('url');
const cookie = require('cookie');

//用來讀取cookie的
const cookieParser = require('cookie-parser');
//session 是基於 cookie生成的
const cookieSession  = require('cookie-session');

var user = {};



//使用express框架創建服務器
var server = new express();
//使用bodyParser,解析post上來的數據
server.use(bodyParser.urlencoded({}))
server.listen(8080);
//use可以接收/user接口到無論是get還是post的請求

server.use(cookieParser('aass'));
(
    function(){
        var arr= [];
        for(var i = 0;i<10000;i++){
            arr.push('keys_'+Math.random());
        }
        server.use(cookieSession({
            keys:arr,
            name:'test1'//加密的cookie的名字,最後通過這個來從服務端查找到對應的人
        }))
})();
server.use('/',function(req,res){
    // console.log(req.body);
    // console.log(req.url)
   
    var GET = req.query;
    var POST = req.body;
    let url = urlLib.parse(req.url,true)
    // console.log(url)
    //當是接口的時候
    
    if(url.pathname=='/user'){
        console.log('是接口')
        // console.log(user)
        // JSON的鍵必須用雙引號包裹
        switch(POST.act){
            case 'reg':
                //檢查用戶名是否存在,如果存在報錯,如果不存在插入數據
                if(user[POST.user]){
                    // console.log('註冊失敗');
                    res.write('{"ok":false,"msg":"此用戶名已存在"}');
                    // res.write('{"ok":false,"msg":"此用戶已存在"}')

                }else{
                    // console.log('註冊成功')
                    user[POST.user] = POST.pass;
                    res.write('{"ok":true,"msg":"註冊成功"}');
                }
                break;
            case 'login':
                if(user[POST.user]==null){
                    res.write('{"ok":false,"msg":"此用戶不存在"}');
                }else if(user[POST.user]!=POST.pass){
                    res.write('{"ok":false,"msg":"用戶名或密碼有誤"}');
                }else{
                    // req.secret = 'aass'
                    // res.cookie('user',POST.user,{
                    //     //cookie只能向上訪問
                    //     //如果這裏的路徑是/index.html是獲取不到user的
                    //     path:'/',
                    //     maxAge:30*24*3600*1000,
                    //     signed:true
                    // })
                    // console.log('簽名cookie:',req.signedCookies)
                    // console.log('無簽名cookie:',req.cookies)
                    // console.log(req.session['test']);
                   
                    if(typeof req.session['test'] == 'undefined'){
                        req.session['test'] = 'xixi';
                        // res.send('這是第一次訪問');
                        res.write('{"ok":true,"msg":"登錄成功,這是第一次訪問"}');
                        console.log('這是第一次訪問')
                    }else{
                        // res.send('這不是第一次訪問');
                        res.write('{"ok":true,"msg":"登錄成功,這不是第一次訪問"}');
                        console.log('這不是第一次訪問')
                    }
                    // res.write('{"ok":true,"msg":"登錄成功"}');

                }
                break;
            default:
                res.write('{"ok":false,"msg":"未知的act"}')
            }
        res.end();
    }else{
        //當是文件的時候
        // console.log('是文件');
        var file_name = './www'+req.url;
        fs.readFile(file_name,function(err,data){
            if(err){
                res.write('404');
            }else{
                res.write(data);
            }
            res.end();
        })
    }
})


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章