如何阻止Adal.js拦截某些路线

时间:2017-03-15 21:28:48

标签: angularjs active-directory adal.js

我正在开发一个Angular 1.x应用程序,我正在使用Adal.js来处理身份验证。后端基于ASP.NET Core构建。我有5个API端点,其中只有3个需要保护(即只有经过身份验证的用户才能访问它们)。换句话说,我不需要验证GET调用。当需要显示来自GET调用的数据时有一个页面,但如果用户决定编辑,删除或添加数据,则需要对他/她进行身份验证。所有API都与UI托管在同一个域中。

我面临的问题是,当我初始化ADAL时,它试图拦截所有HTTP调用并尝试附加令牌。但是,由于每个人都可以看到我的几个页面,这些状态不受保护(即我没有向这些状态添加requireADLogin: true)。之后解决方案无法正常工作,即正在进行API调用。如果我尝试导航到其中一条受保护的路由,那么ADAL会将用户重定向到登录页面并且正在进行呼叫。

使用Adal Angular可以实现这样的解决方案吗?

1 个答案:

答案 0 :(得分:1)

是的,有可能。

在这种情况下,我们没有为该控制器指定requireADLogin:true。但是,我们仍然需要保护页面中我们想要的资源。例如我们可以隐藏需要用户登录的添加/编辑/删除按钮。

以下是一段代码,在用户登录后显示按钮编辑,如果没有则会显示登录

<li><a class="btn btn-link" ng-hide="userInfo.isAuthenticated" ng-click="login()">Login</a></li>
<li><a class="btn btn-link" ng-show="userInfo.isAuthenticated" ng-click="edit()">edit</a></li>