登陆状态的保持
如何判断当前用户是否登录呢?
对于经典的web开发(后台开发), 都是使用当前用户的session。 把登录信息保存进去,每次需要的时候读取就可以了。
对于前端,从理论上讲有两种方式:
- 读取cookie (适合所有h5框架)
- 读取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要保存哪些信息?
- 保存的越少越好。 一个唯一的用户标识就好了。
- 不要泄露数据库的情况。
差的例子:
‘xiao_wang_user_id’, 这个不用猜, 被人一读, 就会大概估计到,是小王的用户id‘140’, 嗯。 好的。 当前用户在数据库中的id是140 。 下一个用户肯定是141号了。
好的例子:
‘a1b2c3d4e5f6’ , 微信的open_id 就是这样的。 不给黑客任何机会。