前后端分离,前端如何判断登录状态?

首页有个链接链到A页面,但是A页面只有登录用户才有权限查看,这个时候前端怎么判断用户是否已经登录?如果已经登录了,就正常跳转到A页面,否则跳转到登录页面。也有其他的js逻辑需要判断isLogin的情况。难道要专门搞个接口去查?感觉这样肯定不对。

之前处理的方式是登录成功之后前端在cookie或localStorage里面保存一个isLogin字段,在需要确认是否登录的时候从这里取值判断。但这与后端判断是否登录的方式就不一致了,实际上也应该以后端的判断为准。有次面试,面试官也说了前端自己保存isLogin的方式不对(当时傻缺了,我应该立马反问、请教面试官该如何处理...)

各位大神,请指教啊,这个问题困扰好久了。由这个问题展开来应该就是整个登录注册系统的设计了,老司机带带我,感激不尽,多谢!


补充:那次面试,面试官说像这种登录注册系统都是有很完善的系统了,让我回去自己搜搜。看过一些文章,但具体操作还不是很清楚,所以想请大神们讲一讲或者是说一下自己项目中采用的方法,感谢!

阅读 62.3k
7 个回答

我那时候做项目,前后端分离用的是 JWT,把后端生成的 JWT token 存入 localStorage,然后前端切换路由(刷新页面)的时候,通过 Ajax 去后端判断当前的 token 是否有效,还有一个就是在发送Ajax 请求的时候带上这个 token。

ajax 发请求获取当前登陆用户的信息

现获取token,再拼接ajax请求,调用登录判定的数据接口

不知道你们的前端用的什么, 不过关于登录状态的判断,我建议是用cookie去做。

  1. 如果是前端在维护cookie就简单了,如果没有那就需要将cookie在请求API的时候将浏览器端的cookie带着去请求。

  2. 当然,楼上说的维护一个token的方式也挺好,但是不应该放到localstorage里面,这是极其不安全的,可以放到前端自己的cookie中,然后再请求API的时候把这个token带上。

如果安全要求不高,可在前端直接用localstorage或sessionstorage这些浏览器存储存放用户信息。安全性要求高,就如上面所说用JWT来做。其实归根接地都是用浏览器存储做

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏