为什么要有app需要登录的这个操作,不登录不行吗?
在这里解释一下为什么要有app登录这个操作
1、 用什么登录:
就是说一些app都需要登录,用手机号登录,用邮箱登录,用第三方登录,我们是用账号和密码登录,账号可以是邮箱,可以手机号,可以是用户名(第三方也是),但是我们必须有密码。这是登录的必备条件,也是账号安全的基本保障。试想,如果只有账号,没有密码,你在家里登录的淘宝购物车中也能多出几件羞羞的衣服。所以登录一定要有账号,账号让你我知道这是专属你的数据和信息,这个账号下的一切内容都是属于你的;所以登录一定要有密码,密码让你知道这是安全的,属于你的东西很难被别人知道,被别人抢走。
2、登录必须有密码?
上面说了账号是身份的标识,那么我觉的密码就是账户安全的保证;
注册登录过程中如何保证账号和密码的安全
首先处于安全的考虑有三点原则:
在传输中,不允许明文传输用户隐私数据;
在本地,不允许明文保存用户隐私数据;
在服务器,不允许明文保存用户隐私数据;
1、加密
将用户的隐私数据加密,那么就算被拿到,也无法被拿来使用。在这里呢,我们先不谈加密,而是先纠正一个误区,有些朋友会认为 Base64 可以加密,甚至有 Base64 加密的说法。Base64 主要不是加密,它主要的用途是把二进制数据序列转化为 ASCII 字符序列,用以数据传输。二进制数据是什么呢?计算机上存储的所有数据,都是二进制数据。
base64:Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示
我们把用户输入的隐私数据再具象一些,比如账号和密码,结合我们上面提到的安全原则,那么分解开来,实际我们要做以下几件事:
服务器-注册接口:接收客户端传来的账号和密码,将其保存在数据库中;
服务器-登录接口:接收客户端传来的账号和密码,与数据库比对,完全命中则登录成功,否则登录失败;
登录成功后,生成或更新 token 和过期时间,保存在数据库, token 返回给客户端;
服务器定期清除 token;
客户端-注册模块:向服务器注册接口发送账号和密码;
客户端-登录模块:向服务器登录接口发送账号和密码;
登录成功后,保存 token 到本地;
退出登录后,清除 token;
发送的账号和密码需要加密;
数据库中需要保存的是加密后的账号和密码;
请求敏感数据时,将客户端传来的 token 和服务器验证,不通过则提示客户端登录;
app保持登录状态,是如何实现的一次登录后,无论你是否后台关掉APP(只要不退出登录),每次打开APP都是自动登录


每当登录成功后,服务器在响应头中返回新的token值,将其保存在本地: 除了在成功登录的回调方法里存储token值外,也可以在内存和磁盘存储一个登录状态,表示是否是登录状态。下次启动APP时,我只需要从本地获取该值,看其是登录状态否?然后决定界面怎么显示,或者点击界面上的按钮去执行什么事件,是去完成业务动作,还是弹出登录界面让用户重新登录。在每次发送非登录请求接口时,将token作为公共参数放入请求头中提交给服务器,服务器对其进行校验,判断是登录状态否?还是太久未登录需要重新登录。然后返回相应的状态码。
如何实现自动登录
pp发送保存的加密串到服务器,(加密串,用户名,mac,随机数)==>RSA公钥加密
服务器用RSA私钥解密,再用A
ES解密加密串,判断用户名是否一致。如果一致,再以(用户名+Android/IOS/WP)为key到缓存里查询。如果判断缓存中的salt值和客户端发送过来的一致,则用户登陆成功。否则登陆失败。

网友评论