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

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

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

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


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

阅读 40.1k
评论
    7 个回答

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

    评论 赞赏

      图片描述

      评论 赞赏
        评论 赞赏

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

          评论 赞赏

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

            评论 赞赏

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

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

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

              评论 赞赏
                Denzel
                • 2.2k

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

                评论 赞赏
                  撰写回答

                  登录后参与交流、获取后续更新提醒