一、web的交互概括
目前主流就是用SSO解决方案,单点登录就是在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录。
在我们Springboot项目中,会配置一个登录认证的配置类,并且会有一些过滤器类,形成一个Filter过滤器
前端发起请求后端的接口,会判断当前请求的是否已经登录,先经过过滤器,如果没有登录信息,那么就需要用户在前端先进行登录动作,完成之后,后端接收去判断当前数据库用户中是否存在,如果存在那么就根据请求接口返回数据给前端,否则会返回用户无效,需要注册,创建用户;
登录成功之后,后端会返回相关的用户凭证信息cookies信息给到前端浏览器保存,只要浏览器不清缓存,用户信息就会在有效时间内保存着
用户接着在系统进行查询,修改等操作,也就是发起第二次之后的请求,此时是登录状态,请求会默认带上用户的凭证信息,后端接收请求 首先还是经过 过滤器,判断当前用户信息登录状态,已经登录,那么才会通过过滤,继续返回接口信息给回前端。
在浏览器中,按F12 -Application--Storage-cookies 找到 所在位置 cookies信息,这个是登录之后,后端返回给前端保存在浏览器的
二、获取当前登录用户信息
通过后端实现一个get请求的无参接口,每次请求的接口 浏览器都会默认带上当前用户的cookies信息,后端先经过 过滤器,会验证当前的用户信息,cooikes包含很多键值对信息,比如有些uid,sid之类的识别当前用户的唯一信息,过滤器通过响应的http request框架类可以获取这些id信息,进而去数据库查到对应的实际用户的账号信息,然后封装成一个User类返回给前端即可
三、前端缓存用户信息,避免多次请求后端接口获取用户信息
前端通过js内置的函数代码可以缓存 后端返回的数据,比如请求获取了当前用户的信息,把用户信息封装好,然后缓存在当前前端浏览器缓存中,在F12 -Application--Storage-Local Storage/Session Storage , 以 key:value键值对缓存浏览器,缓存目的就是,比如前端多个页面跳转后需要多次判断用户是否有修改权限,是否有删除权限,就需要或者用户的账号,进而判断这个用户具备哪些权限,再给其展示对应的权限使用,缓存好用户,一次请求,避免多次请求耗时,从缓存中取即可
注意Session Storage 就是关闭浏览器就没了,一次会话的有效期
Local Storage是个用久缓存,比如下次登录 前端有个下拉框选择,用户有需求要保存当前的选择展示哪个值 那么这里可以放一个,把下拉数组选中值赋值当前选择的内容,保存下来
前端框架VUE,中 直接用变量 sessionStorage localStorage,这个是内置变量 直接进行set get 创建 获取
396



被折叠的 条评论
为什么被折叠?



