首页 > 其他分享 >登录(cookie,session)

登录(cookie,session)

时间:2022-10-18 23:22:18浏览次数:60  
标签:const 登录 session cookie http 100 服务端

cookie和登录校验

cookie :存储在浏览器的一段字符串,最大5kb,每个域都有一个cookie,跨域不共享,格式如 k1=v1;k2=v2(可结构化)

cookie会随http请求传递给服务端
每次http请求,cookie都会随着传递到服务端
服务端可修改cookie再返回前端
默认,跨域不可传递cookie

服务端操作cookie

const http = require('http')
const server = http.createServer((req.res)=>{
  1,设置cookie
  res.setHeader('Set-Cookie','a=100')
  ctx.cookie.set('a','100')
  2,获取cookie
  const cookieStr = req.headers.cookie
  console.log('cookie is',cookieStr)
  ctx.cookie.get('a')
  3,结构化cookie (概念很重要)
   //cookieStr:'a=100,b=200'-->{a:'100',b:'200'}
  const cookieObj={}
  cookieStr.split(';').forEach(cookieItemStr =>{
  const arr = cookieItemStr.trim().split('=')
  const key = arr[0] //a
  const val = arr[1] //100
  cookieObj[key]=val
}
  console.log('cookie  obj is ',cookieObj)
  res.end('cookie test')
})
server.liseten(3000)

cookie如何用于登录校验
请求登录接口,成功则设置cookie,如user=zhangsan
前端再请求其他接口,就会带上上述cookie
服务端判断cookie 有无user=zhangsan ,即可验证

session

cookie不能暴露用户名
cookie中有user=zhangsan
cookie存放用户信息明文,非常危险
解决方案:cookie存放一个用户标识,如userId=123

session :用于登录,存储用户信息(cookie对应),用户访问次数作为用户信息
使用npm插件koa-generic-session
使用ctx.session
模拟登录
``
const session = require('koa-generic-session')

密钥
app.keys=['dafsfasd%%__fas5555']
自动配置cookie和session
app.use(session(
配置cookie
cookie{
cookie在根目录下有效
path:'/',
cookie只允许服务端来操作
httpOnly:true,
cookie的过期时间
maxAge:246060*1000
}
))
``

标签:const,登录,session,cookie,http,100,服务端
From: https://www.cnblogs.com/nlx123/p/16800913.html

相关文章

  • day13cookie
    Cookie概述:为了解决http无状态的问题(通过在cookie里面存储sessionID的方式来解决),cookie是存放在浏览器上的Cookie的特性存储在浏览器上存储大小一般是4kb左右会随请......
  • Microsoft Teams团队频道里共享文件弹出登录提示解决办法
    MicrosoftTeams团队频道里共享文件弹出登录提示解决办法一,情况员工从Teams里的团队频道打开共享文件时,该文件突然要求员工登录账号,即使登录账号后依然会弹出下一个,提示......
  • django报错 'WSGIRequest' object has no attribute 'session'
    最新学python的django后台用到session,报错'WSGIRequest'objecthasnoattribute'session'开始以为是session问题,结果去掉session仍报类似'WSGIRequest'objecthasno......
  • 查询每个用户最后一次登录信息
    文章目录表结构和数据:方法一:如果只需要用户id和最后一次登陆时间方法二:如果需要携带其他日志信息方法三:oracle数据库使用row_num()over表结构和数据:CREATETABLE`temp_t......
  • RHCE第四章 SSH远程登录服务器
    连接加密技术简介     ssh基于tcp协议  端口号:22目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进......
  • mybatis_15_在 SqlSessionFactoryBuilder.build() 方法中传入属性值
    查阅SqlSessionFactoryBuilder.java中重载函数build的定义中,存在支持传入Properties的定义  使用参考:Stringresource="mybatis-config2.xml";InputStreaminputS......
  • JDBC工具类-JDBC练习-登录案例
    *目的:简化书写*分析: 1.注册驱动也抽取 2.抽取一个方法获取连接对象 *需求:不想传递参数(麻烦),还得保证工具类的通用性。 *解决:配置文件 ......
  • Beyond Compare4 使用 SSH 登录问题记录
    服务器场景服务器未安装ftp软件,仅允许通过sftp登录,已开启防火墙,放行端口40022/TCP,不允许使用密码登录问题记录错误消息1:Connectionfailed:connectionerror(-1)原......
  • [答疑]重复登录时后一个把前一个挤下去的状态图
    重复登录时后一个把前一个挤下去的状态图UML菜鸟(122***922)2018-05-3022:39:44请问下,用户登录,注销,还有重复登录时后一个把前一个挤下去,这个如何画状态图来说明呢?UML菜鸟(......
  • 【Vue】悬浮窗和聚焦登录组件经验总结
    前言 本文整理了实现悬浮窗以及聚焦登录组件的功能。 为的是方便大家和自己的学习。 省流:可以只看1.2和2的代码即可1悬浮窗现在各大流行视频网站的平台都在使用这种悬浮......