登录验证
登录验证的方式
- 账号密码登录。
前端输入账号密码传给后端,后端验证账号密码的正确性,将加密后的token返回给前端,前端对其进行存储。如果前端想要获取用户信息,可以再通过这个token请求获取用户详细信息。每次请求除了登录接口外的其他接口都需要携带token,用于校验权限。(后期再讲解如何通过token中携带的信息去进行权限校验)
- 手机号发送验证码登录
前端发送手机号至后端,后端生成随机数设置失效时间存储至redis,当用户输入手机号和验证码后返回用户信息。
- 通过其他历史登录信息进行登录
可能这句话描述有点问题,比如你已经登录了qq,那么就可以根据qq登录的信息去登录qq邮箱。
登录
不同的等
根据不同的需求可以设计不同的登录方式。
- 可多地登录账号。
1.用户登录后,以user_id作为key将用户信息存储至reids中,将user_id和账号过期时间加密生成token后返回给前端。退出登录时只需清楚前端token。(优点:可实现修改密码后原有登录账号强制登出,用户角色的实时修改。缺点:用户登出操作后,原有token依然具有操作的权限。)
2.用户登录后,生成一个随机数作为key将用户信息在redis中,将随机数生成的token返回前端,退出登录时同时清除redis中的数据。(优点:登出操作后原token彻底失效,缺点:管理员无法通过user_id强制登出用户,修改密码后原有登录依然可以操作。)
- 单用户只能单设备登录
网上有些方法推荐存储至数据中,这里并不做推荐,因为除了登录登出接口外的所有接口都会进行设备的校验以及权限的校验,如果存储在数据库中会频繁查询数据库,数据库负载会变高
1.获取用户登录的ip信息,将ip信息和用户信息同时存入redis,每次进行权限校验的同时校验用户登录ip,若登录ip与redis中的值不同,退出登录。
2.设置一个版本号存储至redis中(可以是时间戳),每次更新密码或者登录操作时将版本号同时记载到token中,每次操作验证这个版本信息。
- 多系统的单点登录
将多个系统的登录模块单独剥离出来,设计一个专门用于登录的系统模块,当用户登录多各系统中的一个系统时,登录系统将授权令牌作为参数发送给各个子系统。信息校验采用相同的规则。
图转载自:https://www.cnblogs.com/ywlaker/p/6113927.html