刷新id_token ADAL:Angular 4

时间:2018-04-20 20:19:58

标签: javascript angular adal.js

我使用带有ADAL的Angular 4来验证我的网络应用程序中的用户,使用ng2-adal库作为adal.js的包装。

我面临的问题如下: 所以令牌在一个时间限制后到期,我有一个canActivate路由保护,检查用户是否经过身份验证。如果没有,它会将用户导航到登录页面。这就是我的护卫员的样子:

import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { AdalService } from 'ng2-adal/dist/core';

@Injectable()
export class RouteGuard implements CanActivate {

  constructor(private router: Router, private adalService: AdalService) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    if (this.adalService.userInfo.isAuthenticated) {
      return true;
    } else {
        this.router.navigate(['/user-login']);
        return false;
    }
  }
}

因此,只要令牌到期,用户就会导航到登录页面,这对用户来说很烦人。有没有办法在令牌到期时续订令牌?

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,并且我的修复工作正常。 在app.component.ts中,将此代码添加到ngOnit()。

this.adalService.handleWindowCallback();
 this.adalService.acquireToken(this.adalService.config.loginResource).subscribe(token => {
  this.adalService.userInfo.token = token;
  if (this.adalService.userInfo.authenticated === false) {
    this.adalService.userInfo.authenticated = true;
    this.adalService.userInfo.error = '';
  }
}, error => {
  this.adalService.userInfo.authenticated = false;
  this.adalService.userInfo.error = error;
  this.adalService.login();
});

令牌过期时,将调用应用程序组件,获取令牌会静默刷新令牌。但是this.adalService.userInfo.authenticated仍然为假,导致重定向或再次调用登录方法。因此,手动将其设置为true可修复重定向错误。 this.adalService.config.loginResource会自动由adal-angular自己使用我们需要令牌的资源来设置。

还将expireOffsetSeconds: 320,与{p>一起添加到adal配置数据设置中

tenant: configData.adalConfig.tenant,
  clientId: configData.adalConfig.clientId,
  redirectUri: window.location.origin,

expireoffsetseconds会根据我们在令牌实际失效之前指定的时间使令牌失效。

答案 1 :(得分:2)

我明白了。这是我添加它的方式:

Session info ------------------------------------------------------------------------------------------------------------------------
  setting  value                       
version  R version 3.4.4 (2018-03-15)
system   x86_64, mingw32             
ui       RStudio (1.1.383)           
language (EN)                        
collate  English_United States.1252  
tz       America/Chicago             
date     2018-04-27                  

Packages ----------------------------------------------------------------------------------------------------------------------------
  package     * version date       source                                   
base        * 3.4.4   2018-03-15 local                                    
Cairo         1.5-9   2015-09-26 CRAN (R 3.4.1)                           
compiler      3.4.4   2018-03-15 local                                    
curl          3.1     2017-12-12 CRAN (R 3.4.3)                           
datasets    * 3.4.4   2018-03-15 local                                    
devtools      1.13.2  2017-06-02 CRAN (R 3.4.0)                           
digest        0.6.12  2017-01-27 CRAN (R 3.4.0)                           
git2r         0.18.0  2017-01-01 CRAN (R 3.4.0)                           
graphics    * 3.4.4   2018-03-15 local                                    
grDevices   * 3.4.4   2018-03-15 local                                    
htmltools     0.3.6   2017-04-28 CRAN (R 3.4.0)                           
httpuv        1.3.5   2017-07-04 CRAN (R 3.4.1)                           
httr          1.3.1   2017-08-20 CRAN (R 3.4.1)                           
jsonlite      1.5     2017-06-01 CRAN (R 3.4.1)                           
magrittr    * 1.5     2014-11-22 CRAN (R 3.4.0)                           
memoise       1.1.0   2017-04-21 CRAN (R 3.4.0)                           
methods     * 3.4.4   2018-03-15 local                                    
mime          0.5     2016-07-07 CRAN (R 3.4.0)                           
R6            2.2.2   2017-06-17 CRAN (R 3.4.1)                           
Rcpp          0.12.13 2017-09-28 CRAN (R 3.4.2)                           
shiny       * 1.0.5   2017-08-23 CRAN (R 3.4.3)                           
stats       * 3.4.4   2018-03-15 local                                    
tools         3.4.4   2018-03-15 local                                    
utils       * 3.4.4   2018-03-15 local                                    
withr         2.0.0   2017-07-28 CRAN (R 3.4.1)                           
xtable        1.8-2   2016-02-05 CRAN (R 3.4.0)                           
yaml          2.1.16  2017-12-12 CRAN (R 3.4.3)