我正在使用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}}内,每个模板都有一个控制器。
答案 0 :(得分:1)
使用ng-if在使用应用程序安全性时更安全,更安全。 ng-show和ng-hide将起作用,但这只会设置/重置经过身份验证的标题和菜单的可见性。
因此,在脚本部分进行身份验证时,通过设置范围变量类似$scope.authenticated = true;
,并在ng-if="authenticated"
模板中使用该变量。
答案 1 :(得分:0)
一个简单的解决方案是添加和隐藏到您的导航和标题,这取决于当前路线。 我通常使用UI路由器,所以我不会随便提供服务,但如果你想不出来就添加评论,我会看看。