- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 ASP MVC 4 的新大项目,我需要在未来构建许多微型 Web 应用程序,其中包含:
让我解释一下,如果我们看一下:
我们会注意到它的所有子域甚至不同的域 (youtube) 都是完全相同的横幅,它们只是更改了内容,如果我已经在 google play 中进行了身份验证,我不需要再次进行身份验证在 Gmail 或 YouTube 中。
我想对我的网站做同样的事情:这里有一个图片解释链接:http://www.use.com/ba3e6c12424c7696be7f
1- 是否可以在不同的域中托管横幅和网站,并且仍然不在每个网站中再次进行身份验证?我正在考虑 YouTube 域和 google 域,这是可能的。我怎样才能获得相同的体验?
2 - 我认为使用子域非常容易,不需要 OAuth 2 进行身份验证,只需普通的 ASP MVC 4 简单成员即可完成这项工作,对吗?
3-假设我选择带有子域的 ASP MVC 4 简单成员资格,如果我想获得与 google 横幅相同的体验,我该如何组织我的项目,这样我的横幅就不会在每个项目中都有重复的代码?
a) 第一个想法是构建横幅,将其放入程序集中并使用 HTML 帮助程序呈现它,这是一个不错的选择吗? )
b) 如果我将每个子域托管在不同的服务器中,我是否仍然会有相同的体验?
c) 我可以选择在子域 1 中托管横幅并使用 JavaScript 将其加载到子域 2 中的网站吗? (我是否还有同样的经历)
4-假设我必须给不同域(不是子域)中的每个网站,我该如何管理架构?我只需要一些线索。
5- 如果我在所有方面都错了,您能否指导我在完全不同的域或不同的子域中获得完全相同的体验并提供优雅的解决方案?
提前谢谢你,抱歉我的英语不好(第三语言)。
最佳答案
您在这里确实有两个不同的问题。首先,如何在多个项目中包含一些 HTML。这里真的有无数的可能性。如果您的所有站点都在 Visual Studio 中的同一个解决方案中,最简单的方法是简单地选择一个项目来保存横幅的局部 View ,然后在您的其他项目中链接到它。您可以通过在解决方案资源管理器中右键单击项目中的某处并选择添加 -> 现有项目...,在其他解决方案中找到该文件,但不是“添加”以确认,而是单击它旁边的箭头,展开下拉菜单并选择“添加为链接”。
或者,如果您的一个或多个网站不在同一个解决方案中或完全使用另一种语言,那么您最好的选择可能只是将 HTML 片段保存为平面文件,每个网站都可以访问的地方到。然后,您只需从该文件中读入并显示它。
您的第二个问题更复杂:如何共享身份验证。如果所有站点都在同一个域(子域)上,那么您只需在域本身上设置 cookie,所有子域都将收到 cookie 并可以访问身份验证状态。但是,如果您在不同的域上拥有站点,它就会变得更加复杂。您要么必须实现 OAuth 之类的东西,如果所有站点都属于一起,这将很尴尬(即 OAuth 仅真正用于与第三方进行身份验证,没有人真正使用它在相关但不同的域之间共享身份验证。)或者,您基本上创建一个为其他站点提供身份验证的服务器。
这是一种复杂的设置,但您已经在 Google 拥有的 Assets 等地方看到了它的实际应用。当你去登录时,它会带你到 accounts.google.com,然后你在登录后被重定向到原始站点。从本质上讲,发生的事情是技术上你唯一“登录”的地方是帐户.google.com。如果家族中的其中一个站点需要身份验证,它会将您重定向到 accounts.google.com。此时,如果您已经有一个授权 cookie,它会被发送并且 accounts.google.com 恢复您经过身份验证的 session ,然后它会重定向回原始站点,并使用一些标识您已登录的 token 。进入所有细节以及如何实际设置它远远超出了 StackOverflow 上可以合理完成的范围,但是 this is a really good reference and starting point .第 1 部分描述了该理论。下一部分详细介绍了如何设置它。
关于asp.net-mvc - 系统架构 : How to Use the same Banner ( like google banner ) in multiple different websites hosted in different domains or subdomains ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18277901/
Windows“主机”文件编码是什么?是UTF-8吗?还是 ASCII + 系统代码页?应如何添加 IDN(带有变音符号等的国际域名)条目以及它们是否可以添加? 最佳答案 它应该是没有 BOM 的 A
我已经在谷歌上搜索了大约 90 分钟,但仍然没有答案。在哪里设置 default_url_options?我已经将其设置为 config.action_mailer.default_url_optio
我正在从它的样式文件中设计一个 Angular 组件,我发现我必须使用 :host ,:host() 或 :host-context selector ,它们各自有什么不同? 最佳答案 :主机 是用于
我正在创建简单的网络应用程序。而且我在服务器配置方面遇到了问题。当我尝试启动服务器时,收到错误消息 The element type "Host"must be terminated by the m
这个有效: 127.0.0.1 www.somesite.com 但不是这个: 127.0.0.1/somepath/www www.mysite.com 我做错了什么?是否可
我必须查看我的前同事留下的一些脚本,我很好奇为什么他在参数中使用 $a = $(Read-Host -Prompt "Write Something")节而不是 $a = (Read-Host -Pr
我在远程连接到 MySQL 服务器时遇到问题。我知道我的用户设置了来自任何主机的“%”通配符,因此我应该有权访问服务器。我可以使用我的凭据本地登录 MySQL 服务器,但不能远程登录。 我在 my.c
我正在尝试使用 angular 2 构建一个双主题应用程序。有问题的组件 css 已经使用 :host/deep/强制对子组件进行样式设置。 但是我正在尝试根据 html 主题切换此样式,并且我正在使
我需要将特定的传出连接(从我系统上的任何 网络客户端)重定向到特定的 IP。是的,可以通过在 /etc/hosts 文件中添加这一行来完成: 123.456.789.012 www.mydomain
尝试在开发中预览我的邮件程序,但出现上述错误。(使用 Michael Hartl 教程)。 我相信它因为我的主机而无法正常工作。但是,使用 cloud 9 我很难找到我的主机。在书中,它被定义为 Cl
nc 当我在虚拟机上执行它时工作正常。 Connection to 10.0.0.10 22 port [tcp/ssh] succeeded! 但是当我在 docker 容器内执行相同的命令时,它会
我正在学习PowerShell,想知道两者之间的区别 Read-Host -Prompt "Text" 和 Read-Host "Text" 是同一件事还是我没有看到的区别? 最佳答案 这是同一件事。
我无法对 Cassandra 节点进行查询。我能够连接到集群并进行连接。然而,在执行查询时,它失败了 Caused by: com.datastax.driver.core.exceptions.No
我有这样的场景,比如我需要运行一个位于 12.34.567 的 API curl 请求,登录后我必须再登录一台主机 98.76.543。 登录到第二个主机后,我必须运行curl -XPOST -H"C
当我尝试 git push -u origin master到我的存储库,我得到 400 Bad Request .我特意用 编辑了一些信息。 最近从 gitlab-ee 中解绑了 nginx,并验
假设我有某个程序的源代码,源代码使用 GNU autotools,为了简单起见,假设该程序绝不是任何类型的开发工具。如果我手边有交叉工具链,我可以使用 --host configure 为平台 foo
在我的 ASP.NET Core 2.0 项目中,我一直在使用 Microsoft.Extensions.Hosting 命名空间中的 IHostingEnvironment 和 IApplicati
我正在使用以 Python3.6 为基础的 docker 镜像。突然间它开始崩溃(启动后立即退出)。所以我冲进了容器,发现它崩溃是因为与容器化 postgres 数据库的连接突然失败。我设法得到的唯一
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我尝试使用 ssh命令连接到另一个远程主机。 ssh -p 21098 -i $OPENSHIFT_DATA_DIR/.ssh/host_key user@domain.com The authe
我是一名优秀的程序员,十分优秀!