【问题标题】:Angular 2 Multi Tenant System - Username as "subdomain"Angular 2 多租户系统 - 用户名作为“子域”
【发布时间】:2016-09-28 06:57:23
【问题描述】:

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

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

接着我的问题:有没有办法可以在 Angular 2 应用程序中处理这个问题?

【问题讨论】:

  • 我也在看这个
  • 我也在搜索这个:-/
  • @duardbr 一种方法是在您的服务器上使用通配符。例如,您的网站将“接受”所有子域,即*.domain.com。然后由您来验证服务器上的子域。
  • 感谢 Daniel,但目前还不清楚......在 Rails (ROR) 中它很容易实现。
  • @DanielGrima 你能更清楚一点吗,我有类似的事情要做,当用户输入tenant1.mycompany.com 时,我应该从网址中提取我的租户名称。我怎样才能在我的本地进行这项工作

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


【解决方案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);
        }
    }
}

有关使用的 RegEx 的说明,您可以查看:https://regex101.com/r/OnkLD5/1

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    相关资源
    最近更新 更多