共计 635 个字符,预计需要花费 2 分钟才能阅读完成。
登录流程
- 前端登录传输用户名和 md5 加密后的明码
- 后端对明码在进行 md5 加密,或者应用 md5 加密的明码 + id 进行盐加密,减少明码被破解的难度。
登录胜利后,这里分成单体,或者分布式的状况
单体
- 单体比较简单,登录胜利后,在后端在 session 外面 setAttribute 存入用户信息。
- 后续登录在拦截器获取 session,查问 session。
服务器集群、服务器分布式
- 存在 session 共享 的问题。应用 jwt 解决问题,应用 ip,用户信息生成 token 值,返回给前端。
- 在登录拦截器,解析每次传过来的 token,匹配 ip 和用户信息,用户信息与数据库校验。然而都查数据库,会减少数据库压力,所以也能够把 token 存入 redis 外面,解析后用户信息和 redis 里的 token 信息测验。
有选择性应用验证登录信息
- 对于 http 申请来说,有的申请须要登录后能力拜访,有的不须要登录后就能间接拜访,这里应用注解的形式,在须要登录能力拜访的接口应用自定义注解 @login,注解在类或办法上。当客户端申请后端接口,如果类或办法上没有 login 注解,则不会坐用户信息校验。
总结
前端明码应用 md5 明码传输到后端,后端对明码进行盐加密。针对分布式服务,或者集群服务,应用 jwt 生成 token,进行后续数据校验,后续数据校验个别应用拦截器校验。针对不是所有接口都需数据校验,在须要登录后能力拜访的接口,在类上增加 login 注解,没有增加注解的类不进行数据校验。
代码示例
github 登录源码
github 拦挡拦截器源码
正文完