我正在开发一个多租户应用程序,其前url为:“https://example.com/{portalid}/login”,其中portalID
将客户更改为客户。所以最初的登录是这样的。https://example.com/portalId/Login在登录页面中,我有一个文本框和一个按钮。所以文本框接受portalId
并单击,我想在不重新加载页面的情况下更改url中的portalId
。
代码:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF, Location } from '@angular/common';
import { AppComponent } from './';
import { getBaseLocation } from './shared/common-functions.util';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
HttpModule,
],
bootstrap: [AppComponent],
providers: [
appRoutingProviders,
{
provide: APP_BASE_HREF,
useFactory: getBaseLocation
},
]
})
export class AppModule { }
export function getBaseLocation() {
let basePath = sessionStorage.getItem('portalId') || 'portalId'; // Default
return '/' + basePath;
}
在产品构建中,我将portalid设置为base-ref的一部分。
现在使用测试框,我想覆盖这个值。
客户1:
因此,初始url是https://example.com/portalId/Login。
当我在文本框中输入任何数字时,url应该改为
EX:https://example.com/21/Login
我正在会话存储中存储的portal和jwt令牌。
成功登录后,每个路由都必须具有portalid。
像这样的东西
https://example.com/21/home
对于客户2:在新窗口中(现在Portalid是45)
网址https://example.com/45/Login
这里portalid和jwt令牌也保存在会话存储中。
成功登录后,每个路由都必须具有portalid。
像这样的东西
https://example.com/45/home
最佳答案
这必须通过路由来完成。遵循本教程:https://www.learnhowtoprogram.com/javascript/angular-extended/dynamic-routing-navigation。您必须在代码中设置要导航到的路由。例子:this.router.navigate([**DyanamicPortalID**, 'Login']);