612 字
3 分钟
setCookie 异步导致的问题案例
最近有个新需求,用户登录后如果是黑名单用户的话,则不允许访问页面,并弹出提示。
由于这个项目的登录并非传统的用户名、密码登录,而是通过京东服务市场订阅软件,通过按钮重定向跳转并配合 setCookie
操作登录。详情如下:
这里一开始和后端商量的方案是判断 cookie
的 token
字段是否存在,如果不存在则为黑名单用户,然后前端再处理打开遮罩并提示用户。
在这种情况下,由于setCookie
是异步操作,可能会导致以下问题:
- 逻辑错误:由于
setCookie
是异步的,可能会导致在判断黑名单用户之前cookie
还未被设置,导致判断逻辑错误。 - 用户体验问题:用户可能会在 cookie 还未被设置的情况下就看到页面内容,然后才收到黑名单提示,这样会导致用户体验不佳。
- 不稳定性:异步操作可能会导致不稳定的行为,因为异步操作的完成时间是不确定的,无法保证每次都能如期完成。
为了解决这个问题,你可以考虑以下方案:
- Loading 界面:在设置
cookie
期间显示一个Loading
界面,确保在 cookie 设置完毕前用户无法看到页面内容。 - 延迟执行:设置一个定时器,在一定时间后再检查
cookie
是否设置成功,如果还未设置成功,则提示用户。 - 与后端沟通:与后端进行合作,讨论是否可以在登录成功后返回一个标识,而不是依赖于
cookie
。 - 后端检测:后端先提前检测是否是黑名单用户,如果是的话则重定向到
/black
路由
最终我们选择了方案 4!通过在后端进行黑名单用户检测,可以避免前端异步操作导致的问题,确保用户体验和逻辑的准确性。
在这个方案中,后端负责判断用户是否为黑名单用户,并且做出相应的跳转,前端则根据后端的响应进行重定向并传递参数,以此来实现对黑名单用户的处理。这样可以简化前端的处理逻辑,确保页面重定向和参数传递的准确性。