前后端分离、session和cookie、token

前后端分离需要token(令牌)来进行互通。
前端第一次登录后,后端使用userid,时间戳等信息组成字符串,然后使用加密技术来进行加密,这就是token,传给前端。以后前端在调用接口时,就把token带上,后端拦截器取得这个token后进行解密,如果可正常解密拿到相关数据,则认为是合法信息。
前端和后端分属不同项目,域名不同,需要用CROS进行跨域处理。

  • HTTP是基于请求/响应模式、无状态的协议。
  • 所有请求是相互独立的、无连续的。
  • 服务器无法记住与识别客户。

一、cookie和session

session跟踪是web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是cookie和session。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录确定用户身份。

二、实现会话跟踪的技术

1.cookie

所有的HTTP消息,不管时请求还是响应均包含头消息

  • 当返回响应给客户端时,Servlet容器会把会话的信息添加到响应头信息中。
  • 客户端浏览器接收到响应后提取头信息,并将其存储在本地机中,再发送请求会将该信息带回服务器端
  • 由浏览器存储在客户端机器上的头信息就称作cookie,以"属性名=属性值;"方式组成的文本信息。
    从客户端读取cookie:
String cookieName = “userID”;
Cookie[ ] cookies = request.getCookies();
if(cookies != null) {   
 for(int i=0; i<cookies.length; i++){  
 Cookie cookie = cookies[i];        if(cookieName.equals(cookie.getName())){            //doSomethingWith(cookie.getValue());        
 }   } }

向客户端发送cookie

//创建Cookie对象
Cookie c = new Cookie("userId","a1234");
//设置最大失效
如果要告诉浏览器将cookie存储到磁盘上,而非仅保存在内存中,使用serMaxAge(秒数)
//将Cookie放入到HTTP响应中
response.addCookie(c);//如果没有这一步,将不会有任何cookie发送到浏览器中。

优缺点:

  • 可配置到期规则,数据可持久保存

  • 不需要服务器资源,数据保存到客户端

  • 简单性,基于文本的key-value对

  • 大小收到限制

  • 用户可禁用客户端接收cookie的功能

  • 潜在的安全风险

2. URL重写

客户程序在每个URL尾部添加额外的数据来标识会话.http://localhost/mysite/file.html;jsessionid=1234

  • cookie被禁用或者根本不支持的情况下依旧能够工作.
  • 缺点:必须对所有URL进行编码

3.隐藏的表单域

  • 缺点:所有页面必须是表单提交之后的结果

4.会话对象

会话对象生存于服务器上。会话自动通过cookie或URL重写与客户关联起来。

  • 使用request.getSession()来得到会话,系统检查cookie或附加在URL上的额外信息,看看是否与之前存储的会话对象的键相匹配。如匹配,返回该对象,否则创建新对象
  • 在服务器端会创建一个session对象,产生一个sessionID来标识这个sessione对象,然后将这个sessionID放入到Cookie发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端识别不同的用户。
  • sesison是依赖cookie,如果cookie禁用,那么session也失效。
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Vue前后端分离的开发模式下,如何处理Session问题是一个常见的需求。由于前后端分离的特点,前端与后端之间的通信是通过API接口进行的,因此在处理Session时需要考虑如何保持用户的登录状态。 一种常见的方式是使用Token来管理Session。当用户成功登录后,后端会生成一个Token,并将其返回给前端。前端在后续的请求中需要将该Token携带在请求的Header中,以便后端进行鉴权。后端在接收到请求时,会验证Token的有效性,如果验证通过,则继续处理请求,否则返回错误信息。 在前端中,可以使用localStorage或者cookie来保存Token。当用户访问页面时,前端可以先尝试从localStorage或cookie中获取Token,并将其添加到请求的Header中,以保证用户的登录状态。当用户退出登录时,前端需要删除保存的Token,以确保下次访问时用户需要重新登录。 当然,为了增强安全性,可以在Token中加入一些额外的信息,如过期时间、权限等,以确保用户的身份和授权信息的有效性。 此外,还可以使用JWT(JSON Web Token)来管理Session。JWT是一种基于JSON的开放标准,可以用于在某些信任的环境中安全地传输信息。JWT由头部、载荷和签名三部分组成,其中载荷部分可以储存用户的数据,例如用户ID、用户名等。通过对头部和载荷进行签名,可以保证JWT的完整性和可信度。 总而言之,Vue前后端分离Session管理可以通过Token或JWT来实现。这样可以实现用户的登录状态的保持,并且提供一定的安全性保障。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值