//引入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();
})
}
})
基於express框架和cookie和session驗證實現登錄註冊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.