登陆状态的保持

如何判断当前用户是否登录呢?

对于经典的web开发(后台开发), 都是使用当前用户的session。 把登录信息保存进去,每次需要的时候读取就可以了。

对于前端,从理论上讲有两种方式:

  1. 读取cookie (适合所有h5框架)
  2. 读取vuex (适合Vuejs)

下面我们分别来说一下。

简单版: 使用cookie

cookie是明文存储。 可以直接调用 document.cookie 来实现。 例如, 打开浏览器的console,

输入:

document.cookie

返回:

"TY_SESSION_ID=fad74371-40d1-444b-9d1c-5dd33c086b20; uuid_tt_dd=10_37220323210-1535781572649-914811; dc_session_id=10_1535781572649.670168; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1535781569,1535873915; dc_tos=pef3wv; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1535873935"

里面有哪些内容一目了然。

所以,从安全性的角度讲,用户的登录信息容易被人弄走。

使用Vuex

Vuex 虽然不好上手,但是一旦熟悉了它的写法,还是很容易的。 工作量两者差不多。

另外, Vuex的存储虽然是使用了Cookie , 但是会对很多信息进行封装和作用域的判断。 就算被人拿到, 也不会轻易的泄露信息。

保存信息:

store.dispatch(SET_BASEINFO, this.user_info)

读取信息:

store.state.userInfo

对于Vuex的代码细节, 请看前一节 .

移动端的H5要保存哪些信息?

  1. 保存的越少越好。 一个唯一的用户标识就好了。
  2. 不要泄露数据库的情况。

差的例子:

‘xiao_wang_user_id’, 这个不用猜, 被人一读, 就会大概估计到,是小王的用户id
‘140’, 嗯。 好的。 当前用户在数据库中的id是140 。 下一个用户肯定是141号了。

好的例子:

‘a1b2c3d4e5f6’ , 微信的open_id 就是这样的。 不给黑客任何机会。