老师问一个问题

老师问一个问题

http://img1.sycdn.imooc.com//climg/5f27fba209c9db7809920292.jpg

老师我刚开始把isLogin写成了login写成了无论怎样刷新都会变成登录按钮,但改成isLogin后刷新就不会变了,这是怎么回事呢?我看他们两个返回的数据不是一样的嘛?

还有就是Cookie 用于存储 web 页面的用户信息,是不是就相当于this.state.login的值进行了保存所以才不会

出现刷新页面而改变的情况。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕慕子 2020-08-04 11:51:17

同学你好, 是指将如下所示的isLogin换成了login是吗?

http://img1.sycdn.imooc.com//climg/5f28d743096794b309910132.jpg

如果是这样的话,那么这两个是不同的接口,虽然看起来返回来的数据是一样的,但是后台处理规则也不同。

(1)login.json接口访问时需要传递参数username和password,根据传递的参数判断用户是否登录,然后返回对应的数据。

(2)isLogin.json接口访问时,withCredentials设置为true之后,根据获取的Cookies判断用户登录信息,然后返回对应的数据。

同学将isLogin写成login后,由于没有传递对应的参数,所以是没有登录的,返回的数据data中的login值为false,那么如下所示通过this.setSate设置的login值为false,所以刷新页面是显示的登录按钮

http://img1.sycdn.imooc.com//climg/5f28daba095edb8109360393.jpg

同学可以输出测试理解下,祝学习愉快~

好帮手慕慕子 2020-08-04 10:09:21

同学你好,对于你的问题解答如下:

  1. 老师在源码中并没有看到isLogin变量,请问同学具体是指将哪里的isLogin改写成了login呢,可以详细描述下,便于帮助同学准确的定位与解决问题。

  2. Cookie 用于存储 web 页面的用户信息这句话理解是对的,但是后半句理解有误差,是因为在请求数据时,将withCredentials设置为true之后,服务器就能拿到cookie,也就是登录的信息,就不用再次重新登录了。所以刷新页面实才不会改变登录状态。

祝学习愉快~

  • 提问者 幻城163630 #1
    isLogin是那个ajax链接里面的json文件,我看isLogin和login的json文件返回的数据都是一样的嘛,为啥我刚开始写错了把isLogin写成了login,刷新页面会变成登录按钮,改回成isLogin刷新就不会变成登录按钮了呢?
    2020-08-04 10:25:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师