乐趣区

关于java:Java-登录模块设计

登录流程

  • 前端登录传输用户名和 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 拦挡拦截器源码

退出移动版