我们有一个AngularJS SPA,我们一直在使用Adal.js进行身份验证。到目前为止我们使用$ routeProvider(ngRoute模块)处理路由,但由于最近的一些要求,我们需要远离路由提供者方法并采用$ stateProvider(在ui-router中)。但是,认证机制需要保持相似。 adal.js可以和$ stateProvider一样使用$ stateProvider吗?
我们在路由中使用requiredADLogin参数来指定哪些路由需要Azure AD身份验证。代码如下所示:
app.config(['$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider', function ($routeProvider, $httpProvider, adalProvider) {
$routeProvider
.when('/', {
controller: 'homeCtrl',
templateUrl: '/Templates/home.html',
requireADLogin: true
})
.otherwise({
//template: "Invalid"
redirectTo: '/'
});
在更改为$ stateProvider时,以下代码有效:
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state("dashboard", { url: "/dashboard", templateUrl: "Templates/dashboard.html" })
.state("health", {
parent: "dashboard",
url: "/agent_tier1",
templateUrl: "Templates/health.html",
requireADLogin: true
})
});
或者我们是否可以将requireADLogin属性置于父状态。
答案 0 :(得分:3)
adal.js将与ui-router一起使用,requireADLogin应该处于您要保护的每个州,而不仅仅是在父状态。
答案 1 :(得分:1)
如果您使用的是组件路由器,则ADAL将无法工作:
https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/283
警告任何试图将低级预角度2.0应用程序升级为打字稿的人,ADAL将是一个挑战。