我使用带有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;
}
}
}
因此,只要令牌到期,用户就会导航到登录页面,这对用户来说很烦人。有没有办法在令牌到期时续订令牌?
答案 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)