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

How to stop Adal.js from intercepting certain routes

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

相同的域中

我面临的问题是,当我初始化 ADAL 时,它试图拦截所有 HTTP 调用并尝试附加令牌。但是,由于我的一些页面需要对所有人可见,因此这些状态不受保护(即我没有向这些状态添加 requireADLogin: true)。之后该解决方案不起作用,即正在进行 API 调用。如果我尝试导航到其中一条受保护的路由,则 ADAL 会将用户重定向到登录页面,并且调用正在进行。

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

是的,这是可能的。

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

下面是一段代码,在用户登录后显示 edit 按钮,如果没有则显示 login

<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>