1. 登录设计
登录应该是修改user表的login字段。login后,Login字段为1,否则为0。同时会在login表添加记录。
早期我们使用POST:/login来创建登录。但这样的做法并不好。因为有些场合我们希望电话登录,有的长恨我们希望邮件登录。有的场合我们希望姓名登录。他们对应不同的权限,根据海量API原则,他们都应该设计成不同的API.
POST:/login.t 表示电话登录
这点还没想好
2. 登录和令牌的问题
登录产生的令牌是放在user表,还是login表里还是放在token表里?
不能放在user表,因为一个用户可以在多个设备登录,会产生多个有效的token。
不能放在login表,原因是我们把很多其它令牌放到token表里面了。如果login里也放令牌,令牌的表格就太多了。
所以令牌统一放token表,并且标明这是一个login令牌,令牌的种类是U就可以说明它是登录令牌。login表要有字段是tid,表名它在login表的索引。
3. 登录时候login表和token表的关系
token中有个lgn字段表示这是login表的id,lgn不是外键,因为很多token都不是login产生的。login表中的tid是表名是哪个token,其中tid是外键依赖。
4. 创建登录时候的shop字段应该有吗?
shop字段就是告诉AddLogin接口,我要登录哪个店铺,这种设计的问题是,开发者可以自己低成本的随意改动这个字段以试探登录其它店铺,增加了安全风险。而且这样的机制不优雅。所以最好的方式是把shop_id隐藏在令牌里,规定了这个令牌只能登录哪个店铺。
5. 创建登录时候的role字段应该有吗?
role字段就是告诉AddLogin接口,我要以什么什么角色登录店铺,因为,比方说158041xxxx1这个账号登录XdUaXduA
这个社区,它有好多角色,Root,God,None等等,又比方说158041xxxx1这个账号登录EldrCaRE
这个社区,它有好多角色,Super,Admin,Zoon等等,这个时候我们只希望它登录其中一个或多个角色。比方说,医生,护士?这个时候我们就可以放在令牌的role字段。
role字段还是放在token里。
6. 微信登录
https://modao.cc/embed/auth_box?type=signin
它这个微信登录,第一次扫描,要按关注公众号,手机上关注后,过一会儿,它网页自动会跳转到登陆后页面。
后面再次扫描登录后,它会自动跳转。