ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 登录设计方案分析 ## 场景 登录在各种系统,网站,app都是应该有的,但是如何保证用户信息密码不泄露?并且同时提高用户的体验。 ## 传统网站的登录 ### Cookie Cookie是存储在客户端的,采用cookie保存用户的登录状态,浏览器在每次发送请求都会携带cookie想服务器发起请求,服务器通过检查cookie里携带的信息来判断当前用户是否登录,或者该用户是否登录过期。 #### 安全性: 这中发生虽然简单粗暴,但是却是最不安全的,因为你的cookie信息暴露在客户端,一个有经验的人就可以,通过cookie里的信息,来寻找系统的漏洞。 #### 优化方案: 对cookie中的信息进行加密处理,到服务端时在进行解密处理。优化后,对于安全性不是特别高的网站,可以采用此种登录,尤其是在浏览器关闭后还能保存登录状态。 ### Session Session是存储在服务端的,因此安全性相比cookie来说就很好了,信息并不会暴露给用户,同样可以存储登录用户状态。 #### 安全性: 安全性较高,但是由于存储在服务端,不可以存储太多的数据,且session的有效时间一般不会太长,并不适合前台用户登录,因此比较适合后台登录验证。 ## App的登录 在app中我们基本很难使用cookie+session的方式登录,因为在app中并不是每次请求都是同一个对象。 ### Token登录机制 根据cookie和seesion的优缺点,设计一种基于token的登录机制。 用户第一次登录,输入账号和密码到服务器去验证 服务器验证登录成功,为该账号生成一个唯一的token,这个token保存在服务端,并有时效性,有效时间根据具体需求而设,并返回给客户端(app) 客户端拿到token后保存起来,以后访问服务器要带该token证明其合法的身份 服务端每次接收到客户端的token都要检验其合法性,如若token不合法,拒绝访问 当用户退出登录,则销毁该token,持有token的人将无法访问服务端 ***注:token可以保存在数据库中,或者缓存中,如保存在缓存中,可以提高性能。*** #### 安全性 只需要在第一次登录时输入密码,减少了密码的暴露次数,因为token具有实效性,即便泄漏也是短时间有效,用户重新登录就失效了,当然安全性还有空间可以提高。