javascript - AngularJS 注销和重新登录

标签 javascript angularjs django cookies

我有一个包含一些指令的索引文件-

<div ng-if="$hide">
        <ba-sidebar></ba-sidebar>
        <page-top></page-top>

        <div class="al-main">
            <div class="al-content">
            <content-top></content-top>
            <div ui-view></div>
            </div>
       </div>
    </div>
  <div ng-if="!$hide">
      <login-view></login-view>
  </div>

它的作用是显示用户成功登录的内容。登录的代码是-

$interval(function(){
    var token = $cookies.get('token');
    if(token === undefined){
        $rootScope.$hide = false;
    }
    else{
        $rootScope.$hide = true;
    }
}, 300)

间隔函数检查从后端(django)发送的 token 的cookie并切换 View 。如果有 token ,则显示主要内容,如果没有,则加载登录指令。

要注销,我要做的就是删除这些 cookie 并将它们设置为 null,这会自动将 View 更改回登录指令。

注销后,页面切换到登录。

问题-

当我尝试使用不同的用户登录时,在后端,用户会切换,但一旦 View 更改为主要内容,它就会加载前一个用户的数据,直到刷新整个页面(手动)。

  • 我似乎不明白为什么当 ng-if 重新创建整个 DOM 时,它不应该加载新数据吗?
  • 如果没有,如何加载新数据?

最佳答案

据我所知,问题不在于 ng-if 。当您清除 token 时,您还应该清除用于填充 DOM 的用户对象。现在有两个依赖项 - cookie 和用户对象。

删除 token 时,请确保清除用户对象。如果 ng-if 仅依赖于您的 token ,则意味着在您的登录和用户对象填充之间的间隙,旧的用户对象仍然有效,并且 $hide 将为 false,从而显示您的旧用户数据

关于javascript - AngularJS 注销和重新登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39670301/

相关文章:

javascript - 如何在 Angular 服务中加载 $cookies?

angularjs - 通过将 angular ng-repeat 与 $index 一起使用,数据没有得到反射(reflect)

python - 如何使用 Elasticsearch 在 Haystack 上配置术语的相关性

javascript - JSONP 回调 - JQuery 和其他框架

javascript - beforeunload 事件和 Content-Disposition=attachment

javascript - 检查结果值并添加 String AngularJS

python - Django admin模型复数模式全局设置,不添加后缀 's'

django - Django 对 Google 应用引擎的限制?

javascript - 使用 `object` 创建一个 `createElement` 标签返回一个函数而不是一个对象

javascript - JQuery 确定是否所有复选框列表(在 div 中)都已被选中