当我加载Angular页面时,它应该去一个站点,获取令牌并重定向到同一页面。我该如何实现?
我想到了在ngOnInit()中调用window.location.href = get-token-site.com/token?state=link-to-my-site.com
但是,这将造成无限循环并往返。我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用常规表达式检查网址是否具有令牌
例如:
const url = window.location.href;
const haveNoToken = /^https?:\/\/stackoverflow.com\/?$/.test(url);
if (haveNoToken) {
window.location.href = get-token-site.com/token?state=link-to-my-site.com;
}
所以您可以避免无限循环
答案 1 :(得分:0)
重新编辑到另一个站点:
将此声明保留在您的角度页面中:
HTML:
<button (click)="getTokenFromAnotherSite()">Get Token</buttom>
TS:
getTokenFromAnotherSite(){
window.location.href = `path to another site from where you want to get token?returnPath ='return_page_path'`;
}
在另一个站点上component.ts:
/**
* Method initializes first.
*/
ngOnInit() {
this.route.queryParams.subscribe(resp => {
this.returnUrl= resp.returnPath ;
});
if(gotToken){
window.location.href = `you_host/${this.returnUrl}?token=gotToken`;
}
}
在同一角度页面中接收令牌:
/**
* Method initializes first.
*/
ngOnInit() {
this.route.queryParams.subscribe(resp => {
this.token = resp.token;
});
}