角度视图,如果未经过身份验证,则显示单个视图

时间:2014-10-29 17:59:26

标签: javascript angularjs

我正在使用wrapbootstrap中的SmartAdmin主题。我已经添加了大量我自己的Angular代码~5k loc。

到目前为止,我已经使用主题的方法来查看渲染,但是,现在它已成为一个问题,我需要一种方法来登录页面。

项目的文件结构

project/
  assets/
    js/
      app/
        feature1/
          controller.js
          directive.js
          filter.js
  views/
    feature1/
      template.html
    feature2/
  index.html

当用户首次转到项目根目录时,会提供index.html。在index.html内,标题,侧边导航和&内容有ng-includes/login。页脚。

我使用基于JWT的身份验证&每个请求之间的授权,如果用户未经过身份验证或超时,则会通过$location.path('/login');重定向到project/index.html

这个问题是它仍然显示标题,侧面导航和页脚(来自index.html)。有没有解决这个问题,如果经过身份验证,只能使用templateUrl

正如您所料,我不希望用户在未经过身份验证时看到标题/ sidenav / footer。无论我在路由器中指定index.html,都会提供templateUrl,并在其中使用<div ng-view></div>。我需要的是不要只在特定路线上发生。

编辑:

我使用的模板是通过index.html中的index.html插入的。

模拟<html ng-app="app"> <head> </head> <body ng-controller="PageCtrl"> <header ng-include="'templates/header.html'"></header> <aside ng-controller="'templates/left-panel.html'"></aside> <div ng-view></div> <footer ng-include="'templates/footer.html'"></footer> </body> </html> 布局:

ng-view

在{{1}}内,每个模板都有一个控制器。

2 个答案:

答案 0 :(得分:1)

使用ng-if在使用应用程序安全性时更安全,更安全。 ng-show和ng-hide将起作用,但这只会设置/重置经过身份验证的标题和菜单的可见性。

因此,在脚本部分进行身份验证时,通过设置范围变量类似$scope.authenticated = true;,并在ng-if="authenticated"模板中使用该变量。

答案 1 :(得分:0)

一个简单的解决方案是添加和隐藏到您的导航和标题,这取决于当前路线。 我通常使用UI路由器,所以我不会随便提供服务,但如果你想不出来就添加评论,我会看看。

相关问题