GitHub下载demogit
地址:127.0.0.1:8000/reg?uid=用户名&pass=密码,而后回车github
//注册过程 if (pathname === '/reg') { const uid = String(params.uid) const pass = String(params.pass) //服务器判断该用户是否存在 if (uid__pass__dic[uid] === undefined) { //用户不存在,保存用户 uid__pass__dic[uid] = pass //图1 end({ isSuccess: true, msg: `注册成功 uid is${uid} pass is ${pass}` }) } else { //用户存在,不须要保存 图2 end({ isSuccess: false, msg: `用户名已注册` }) } }
图 1
图 2浏览器
地址:127.0.0.1:8000/login?uid=用户名&pass=密码,而后回车服务器
//登陆过程 else if (pathname === '/login') { const uid = String(params.uid) const pass = String(params.pass) //判断用户名是否存在 if (uid__pass__dic[uid] !== undefined) { //判断密码是否正确 if(uid__pass__dic[uid] === pass){ let sId = sid() //图3 end( { isSuccess: true, msg: `登陆成功 uid is${uid} pass is ${pass}` }, //服务器返回含随机生成的sessionID的Set-Cookie { 'Set-Cookie': querystring.stringify({ sessionID: sId }), }) //浏览器自动保存sessionID sessionID__uid__dic[sId] = uid }else{ //图4 end( { isSuccess: false, msg: `密码错误` }) } } else { //图5 end( { isSuccess: false, msg: `该用户未注册` }) } }
图3
图4
图5session
地址:127.0.0.1:8000/set_nickname?nickname=昵称,而后回车ui
else if (pathname === '/set_nickname') { const nickname = String(params.nickname) //判断sessionID是否存在 if (sessionID__uid__dic[sessionID] !== undefined) { //查找用户名 const uId=sessionID__uid__dic[sessionID] //保存昵称 uid__nickname__dic[uId] = nickname //图6 end({ isSuccess: true, msg: `设置昵称成功 nickname is${nickname}` }) } else { //图7 end({ isSuccess: false, msg: `请先登陆` }) } }
图 5
图 6spa
在建立了Session的同时,服务器会为该Session生成惟一的SessionID
1,判断是否同一次会话,区别于不一样用户的操做
客户端发送请求的时候,会将SessionID带上,以得到对应的Session;服务器能够根据浏览器请求调用Session相关的方法,或往Session中增长内容,(这些内容只会保存在服务器中,发到客户端的只有SessionID)3d
2.从产品角度看,提升用户体验,保护用户权益
假设登陆状态,本人不在,不法分子没法经过sessionID获取用户密码,用户只要退出登陆便可防止不法分子使用本身的帐号code