队列异步执行的时候是无法使用SESSION的,那么登录还能使用队列吗?如果能如何处理cookie和session的对应关系?
走同样的路,发现不同的人生
录还能使用队列吗?
登录通常是个同步过程,用队列不是不行,只是会增加复杂性。
同步的登录过程就是读数据库,判断账号密码正确,设置session,能在一个HTTP请求里搞完。
换成异步,我只能想到下面这种方法:
客户端生成随机token
客户端把token、账号、密码发给服务器
服务器在redis中记录这个token还没登录成功
服务器把把token、账号、密码放到队列处理
队列处理,如果账号正确,redis中的token标记为成功,否则标记为失败
客户端在服务器和队列处理的过程中一直用另一个接口轮询看token是否登录成功,成功的话以后的请求都带上token,否则客户端登录失败。
所以应该尽快完成同步的登录过程,把登录后需要的一些操作(发邮件通知等等)放队列,而不是把整个登录过程放队列。
登录通常是个同步过程,用队列不是不行,只是会增加复杂性。
同步的登录过程就是读数据库,判断账号密码正确,设置session,能在一个HTTP请求里搞完。
换成异步,我只能想到下面这种方法:
客户端生成随机token
客户端把token、账号、密码发给服务器
服务器在redis中记录这个token还没登录成功
服务器把把token、账号、密码放到队列处理
队列处理,如果账号正确,redis中的token标记为成功,否则标记为失败
客户端在服务器和队列处理的过程中一直用另一个接口轮询看token是否登录成功,成功的话以后的请求都带上token,否则客户端登录失败。
所以应该尽快完成同步的登录过程,把登录后需要的一些操作(发邮件通知等等)放队列,而不是把整个登录过程放队列。