网站全静态化,用户登录状态如何保存

chenzhiyi
  • 22

网站在对网站全静态化,用户登录信息状态要如何保存

回复
阅读 5.6k
11 个回答
✓ 已被采纳

推荐使用 @雨夹雪 的方法。采用token的方式。 对服务端而言,只要能够识别这个token就可以了。
这个token可以考虑放到header中。 另外为啥一定要https呢。因为这个时候的token就完全代表你的信息了。如果被三方获取到的话,别人就可以拿到你这个token,干该用户拥有的所有权限的活。

用js,写 cookie~

Dreamy
  • 4
新手上路,请多包涵

存cookie或者各个链接带token,在请求接口的时候,把对应的cookie放入header里或者把token放在url地址里,服务器端进行检查登陆状态,是否登陆,是否登陆超时,然后客户端拿到进行解析…

定义一个cookie,然后把登录信息保存在cookie里面,以后每次进入页面的时候都向cookie里面取值。

服务端把session存在客户端的cookie里,每次请求时请求头都会带上cookie的,服务器进行校验

如果你说的是:JsonApi + HTML + Ajax 类型的实现,那么可以采用token + localStorage(cookie)方案。

  1. ajax调用一个JsonApi(login或者auth)获取token(或者用旧token换新token)

  2. 保存在localStorage中,供其它页面加载时使用

  3. 提供退出登录接口,删除localStorage

  4. 服务器端,每个JsonApi都要判断token是否有效。且token有过期时间

  5. 可以再附加一个简单算法来防止http重放。(用处不大)

  6. 此方案无法避免劫持的问题。

操作本地存储,cookie,localstorage, sessionstorage

要登陆怎么可能全静态化,把动态部分分离出去js处理吧。

我用的是ajax,每次加载页面,都会执行一下这个全局的ajax,,这可是判断用户状态的,,多么简单明了←_←

看到楼主采纳的是 https + token 的方案。
虽然本身方案没啥问题,但是那个答案的解释有一些不太对的地方。
https 对于token的保护主要体现在网络报的传送过程中,将明文的数据进行加密,但是从本质上讲,https并不是针对保护token而发明的,https保护整个数据传送包,只是刚好提高了token传送的安全性,防止token在传输过程中被截取。
而对于答案中提及的

“因为这个时候的token就完全代表你的信息了。如果被三方获取到的话,别人就可以拿到你这个token,干该用户拥有的所有权限的活。”

这句话中的前提是黑客之类的已经拿到用户的token了,在这个场景下,黑客当然可以冒充用户。
用token做登录状态保存,一个安全点实际上是hash存储你的token防止被拖库,这样即使黑客拿走了库中存储的数据,也只是一些hash摘要无法利用。

你知道吗?

宣传栏