我们正在尝试构建一个Angular SPA应用程序,该应用程序利用adal.js对Azure AD进行身份验证。但是,与包含静态路由的示例应用程序不同,不需要身份验证,我们希望确定用户是否经过身份验证,并根据“userInfo.isAuthenticated”相应地路由用户,但是在使用ng-if on时采用此方法索引页面我们被正确地重定向到登录页面,但是在输入登录凭据后,我们看到的是在应用程序处于登录过程中出现一到三次的循环。是否有人使用ADAL进行解决方案。 js和ADAL-angular.js拦截范围级别的'IsAuthenticating'属性以避免此问题?
谢谢,
答案 0 :(得分:0)
您能提供一些示例代码吗?我不清楚你的情况。您是否只是想在页面上显示/隐藏链接?示例应用程序使用userInfo.isAuthenticated的ng-show。您是否在此页面上使用ng-if而无法正常工作?我希望它们在ng-show和ng-if中工作类似,因为它检查布尔值。
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li ng-class="{ active: isActive('/Home') }"><a href="#/Home">Home</a></li>
<li ng-class="{ active: isActive('/TodoList') }"><a href="#/TodoList">Todo List</a></li>
<li ng-class="{ active: isActive('/UserData') }"><a href="#/UserData" ng-show="userInfo.isAuthenticated">User</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a class="btn btn-link" ng-show="userInfo.isAuthenticated" ng-click="logout()">Logout</a></li>
<li><a class="btn btn-link" ng-hide=" userInfo.isAuthenticated" ng-click="login()">Login</a></li>
</ul>
</div>
样品:https://github.com/AzureADSamples/SinglePageApp-AngularJS-DotNet/blob/master/TodoSPA/index.html