Я работаю над мультитенантным приложением с Ex URL: "https://example.com/{portalID}/Login", где portalID
меняет клиента на клиента. Таким образом, первоначальный логин выглядит следующим образом.
https://example.com/portalId/Login
In страница входа, у меня есть текстовое поле и кнопка. Таким образом, текстовое поле принимает portalId
и при нажатии, я хочу изменить portalId
в URL без перезагрузки страницы.
Код:
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.
Теперь, используя поле проверки, я хочу переопределить значение.
Для клиента1:
Итак, начальный URL-адрес https://example.com/portalId/Login".
Когда я ввожу любое число в текстовое поле, URL должен измениться на
Пример: https://example.com/21/Login
Портал и токен JWT я храню в хранилище сессий.
После успешного входа в систему каждая маршрутизация должна иметь идентификатор портала.
Что-то вроде этого
https://example.com/21/home
Для клиента2: в новом окне (сейчас PortalId равен 45)
URL-адрес https://example.com/45/Login
Здесь также portalID и токен JWT сохраняются в хранилище сессии.
После успешного входа в систему каждая маршрутизация должна иметь идентификатор портала.
Что-то вроде этого
https://example.com/45/home