我正在开发一个多租户应用程序,例如URL: "https://example.com/{portalID}/Login",其中
https://example.com/portalId/Login
在登录页面中,我有一个文本框和一个按钮。因此,文本框接受
在生产环境中,我将portalID作为base href的一部分进行设置。 现在,我想通过测试框覆盖这个值。
对于Client1: 所以初始URL是https://example.com/portalId/Login。 当我在文本框中输入任何数字时,URL应该更改为 例如:https://example.com/21/Login Portal和JWT令牌都存储在会话存储中。 成功登录后,每个路由都必须具有portalID。 类似这样: https://example.com/21/home 对于Client2:在新窗口中(现在PortalId是45) URL是https://example.com/45/Login 这里也保存了portalID和JWT令牌。 成功登录后,每个路由都必须具有portalID。 类似这样: https://example.com/45/home
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 href的一部分进行设置。 现在,我想通过测试框覆盖这个值。
对于Client1: 所以初始URL是https://example.com/portalId/Login。 当我在文本框中输入任何数字时,URL应该更改为 例如:https://example.com/21/Login Portal和JWT令牌都存储在会话存储中。 成功登录后,每个路由都必须具有portalID。 类似这样: https://example.com/21/home 对于Client2:在新窗口中(现在PortalId是45) URL是https://example.com/45/Login 这里也保存了portalID和JWT令牌。 成功登录后,每个路由都必须具有portalID。 类似这样: https://example.com/45/home
<a href=" https://example.com/45/Login"></a>
更改为<a href=" https://example.com/76/Login"></a>
,并且实际上它会带你到76页而不是45页? - Patricio Vargas