Angular 2多租户系统 - 用户名为"子域名"

时间:2016-09-28 06:57:24

标签: angular url-rewriting angular2-routing multi-tenant

我正在研究将用户名设置为"子域名"的可能性。在Angular 2.从我迄今为止所做的研究看来,例如,在IIS上托管的系统所需要的只是URL重写,以将示例www.mywebsite.com/usernamewww.mywebsite.com?user=username转换为{{ 1}}。 (参考文献:IIS URL RewriteExample Setup

我可能错了,但我的想法是,在IIS中为Angular 2应用程序设置它并不会产生影响,因为访问路由时服务器没有被访问 - 路由由Angular本身处理。 / p>

关于我的问题:有没有办法可以在Angular 2应用程序中处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

所以我知道我之前已经问过这个问题,但是我想我将描述在Angular应用程序中进行此操作的过程。

首先在服务器上设置子域。在Angular应用程序中提取子域,您可以使用正则表达式提取子域。

示例

getAndSaveSubdomain() {
    let getSubdomainRegex = /(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/i;
    let fullURL: string = window.location.host;
    let result: RegExpMatchArray = fullURL.match(getSubdomainRegex);
    let subdomain: string;

    if (result !== null) {
        subdomain = result[1];
        if (subdomain !== 'www') {
            localStorage.setItem('subdomain', subdomain);
        }
    }
}

有关正则表达式使用情况的说明,请查看:https://regex101.com/r/OnkLD5/1