1.用户登录:
2.当用户发送请求时,网关会拦截请求并判断用户是否已经登录。
3.如果用户已登录,网关会直接放行请求,允许用户访问受保护的资源。
4.如果用户未登录,则需要进行下一步校验。
5.校验Token合法性:
6.网关会检查请求中携带的Token是否合法。
7.如果Token无效或过期,网关会拒绝请求,提示用户重新登录。
8.如果Token有效,网关会继续下一步校验。
9.令牌续命:
10.为了防止令牌过期,网关会将Token存储在Redis中。
11.在用户登录成功并生成JWT令牌时,将Token存储在Redis中。Redis的键可以使用"token:用户ID"的形式,值就是Token本身。
12.当用户访问其他接口时,网关会再次拦截请求。
13.在进行Token合法性校验的位置,同时还会进行Token续命操作。
14.续命操作可以使用redisTemplate的expire方法,传入Redis中存储Token的键和延长的时间。
15.重复登录:
16.为了防止用户重复登录,需要在校验Token合法性的过程中,判断前端传入的Token与Redis中存储的Token是否一致。
17.如果两者不一致,表示用户在其他地方登录过,网关会拒绝请求并提示用户重新登录。
18.如果两者一致,表示Token有效且没有被其他客户端登录覆盖,则继续放行请求。
通过以上整个流程,可以实现用户登录的认证和会话管理。网关在拦截请求时,判断用户登录状态,并对Token的合法性进行校验和续命操作。同时,通过判断Token与Redis中存储的Token的一致性,防止用户重复登录。这样可以提高系统的安全性和会话的可靠性。