Asp.net 表单身份验证和多个域

2023-12-06

我有两个域,domain1.com 和domain2.com 指向同一个asp.net 网站,该网站使用asp.net 内置表单身份验证。问题是,即使域指向同一网站,用户一次也只能针对一个域进行身份验证。因此,如果他首先使用 www.domain1.com,然后访问 www.domain2.com,则后面的网站是相同的,但他仅针对 www.domain1.com 进行了身份验证。如果他在访问网站时使用 www 而不是 www,也会发生同样的情况。

这是我用来登录的:

FormsAuthentication.RedirectFromLoginPage(username, cookie.Checked);

要检查登录:

User.Identity.IsAuthenticated

如何使用户获得指向同一网站的所有域的身份验证?


您需要的是单点登录解决方案。

由于 ASP.NET 身份验证的核心通常是基于 cookie,因此需要注意两点:

  1. 正确设置您的 cookie。
  2. 在注册过程中将您的用户退回到备用域。

更深入地研究这两个方面:

1. 正确设置cookie

您需要确保 ASP.NET 将身份验证票证 cookie 写入根域,而不是显式域,这是使用domainforms 元素的属性:

<forms 
   name="name" 
   loginUrl="URL" 
   defaultUrl="URL"
   domain=".example.com">
</forms>

您应该将您的域名设置为“.example.com” - 请注意前导句点 - 这是关键。这样,对 example.com 和 www.example.com 的请求都将正确读取 cookie,并对用户进行身份验证。

2. 将用户退回到备用域

我们在一些使用单点登录的网站上实施的是往返登录过程。用户在第一个域上进行身份验证,我们加密登录详细信息,并将其重定向到第二个域上的已知页面,在那里登录,然后重定向回原始服务器。

这种客户端重定向很重要 - 仅当有响应返回客户端时才会写入 cookie,并且浏览器必须访问第二个域才能实际看到 cookie。

此类设置中需要考虑的其他细节:

  1. 您可能希望加密的登录详细信息超时 - 以便从浏览器历史记录中调用该 URL 不会自动使用户登录。
  2. 如果域位于不同的服务器上,您将需要确保计算机密钥配置相同,以便您可以正确加密和解​​密详细信息,或者使用其他共享密钥。
  3. 您可能希望有一种机制来从原始服务器调用用户 ReturnUrl,以便您可以将它们发送回正确的位置。

您还可以看一下“跨应用程序的表单身份验证”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.net 表单身份验证和多个域 的相关文章

  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 如何使用 ASP.NET Web API 生成 ATOM 和 RSS2 提要?

    需要采取哪些步骤来调整 ASP NET Web API 的默认 XML 输出以生成 ATOM 和 RSS2 提要 您将需要实现自定义 MediaTypeFormatter 您可能想查看 Filip 的博客文章用于 ASP NET WebAP
  • MVC 操作过滤器和多线程

    我目前遇到了操作过滤器的线程问题 在我的应用程序上 我使用 ActionFilter 来执行每个操作的跟踪 此跟踪将提供统计信息 例如调用的持续时间 并记录参数被派往行动 实际的跟踪实现 由其他团队完成 使用 IDisposable 对象
  • 名称在当前上下文中不存在

    所以 我正在我的笔记本电脑和台式机之间完成这个项目 该项目在笔记本电脑上运行 但现在将更新的源代码复制到桌面上后 我的项目中有超过 500 个错误 所有这些错误都是 该名称在当前上下文中不存在 这是一个例子 职位 aspx
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • 使用 asp.net 发送 20,000 多封电子邮件

    我正在编写一个应用程序 需要向从我们的数据库中选择的学生发送大量电子邮件 每封电子邮件都将进行个性化 包括他们的姓名 学习课程等 因此需要一次发送一个 我可以在 SmtpClient 上循环执行此操作 但我担心我尝试发送的数字最终会遇到超时
  • 如何从代码隐藏运行存储过程(带参数 - 有返回值)?

    如何使用存储过程 带参数 具有类型的返回值int 从代码后面 我的存储过程如下所示 ALTER Procedure dbo sp Noskheh SumOfTotalPay Co ID int AS Declare Sum bigint B
  • ASP.Net 中的不同身份验证方式

    我正在为我的公司开发一个网站 该网站可以在我们的内部网络和互联网上访问 有人问我一些对我来说似乎不可能的问题 但我想在真正说之前问这个问题 我们公司有两种类型的用户 一种是实际在 Active Directory 中注册的用户 等等 拥有
  • 清洁琴弦的更好方法?

    我正在使用这种方法来清理字符串 public static string CleanString string dirtyString string removeChars lt gt string result dirtyString f
  • 有没有办法让 Swashbuckle 将 OData 参数添加到 Web API 2 IQueryable 端点?

    我有一个支持 OData 查询的 ASP Net Web API 2 端点 是这样的 HttpGet Route public IQueryable
  • ASP.NET:如何隐藏ListBox控件垂直滚动条?

    我已经尝试过CSS 溢出 自动 这不起作用 有什么办法可以实现吗 我是否需要创建我在 ASP NET 论坛上看到的自定义控件 我会像您提到的那样创建一个自定义控件 您想要的目标是什么 创建自己的滚动条以放入列表框中
  • 为什么同时存在 System.Net.Http 和 System.Web.Http 命名空间?

    这只是一个简单的问题 因为我正在研究 NET 中可用的各种类库 我注意到有一个System Net Http命名空间和一个System Web Http命名空间 这两个命名空间都有什么用途 创建两个看似不明确的命名空间的动机是什么 是否有任
  • ASP Identity CoreGeneratePasswordResetTokenAsync 已过期

    我已经在 NET Core 2 1 中设置了一个 Identity Server 4 项目 一切正常 但是当我使用用户管理器生成重置密码令牌时 令牌在 24 小时后过期 我可以将其更改为 48 小时吗 我发送重置令牌的代码如下所示 var
  • 使用 IIS 发布:找不到服务器 DNS

    我正在尝试使用 IIS 发布我的项目 我能够通过 Visual Studio 发布它 La aplicaci n web se public correctamente file D www plataformafantasy com Co
  • 我可以在 IIS 中禁用大量更改通知吗

    我偶尔会收到以下导致应用程序池被回收的事件 shutDownMessage CONFIG change HostingEnvironment initiated shutdown Overwhelming Change Notificati
  • 输入类型=图像 - onclick(),将触发其事件,但在 jquery 中的函数上表现不佳

    我认为这可能是两篇文章 2个问题 所以如果你对此发表评论 我会将它们分开 主要问题实际上是 我怎样才能为按钮设置图像背景 简单且正确 我想现在我可以确定这些事实了 因为我在将图像设置为按钮背景时遇到了 小 问题 我想 好吧 如果很难设置的话
  • 如何从源视图 (aspx) 中的 C# 中为按钮事件添加事件处理程序

    为 HTML 源视图中的按钮创建代码隐藏 webforms 事件处理程序的最简单方法是什么 在 VB NET 中 切换到代码隐藏页面并使用顶部的对象和事件组合框来选择和创建非常容易 在 C 中 这些都缺失了 我真的不喜欢设计视图 确保 属性
  • 单击按钮时增加 ASP.net 中的变量

    我是 ASP NET 新手 我正在使用 VB net 创建一个 ASP net 网站 所以这是我的问题 Dim myCounter as Integer 0 Protected Sub Button1 Click ByVal sender
  • TransactionScope 是否需要开启 DTC 服务?

    根据我的阅读 为了在 NET 中使用 TransactionScope 您需要运行 Windows 中的分布式事务协调器服务 我有那个服务关掉 并且我的应用程序似乎运行相同并且回滚事务没有问题 我错过了什么吗 它如何能够发挥作用呢 我正在运
  • 当存在打开的 ASP.NET 4.5 Websocket 时,IIS 应用程序池无法回收

    我遇到了一个问题 可以通过以下方式复制 您需要 IIS8 因此必须在 Windows 8 或 Windows Server 2012 R2 上 在 IIS 管理器中创建一个新网站 例如在端口 8881 上的 TestWs 指向一个新文件夹

随机推荐

  • JavaFX 8 的基本 JUnit 测试

    我想为 JavaFX 8 应用程序创建基本的 JUnit 测试 我有这个简单的代码示例 public class Main extends Application public static void main String args Ap
  • SQLAlchemy - 在 postgresql 中执行批量更新插入(如果存在,则更新,否则插入)

    我正在尝试使用 SQLAlchemy 模块 而不是 SQL 在 python 中编写批量更新插入 我在 SQLAlchemy 添加中收到以下错误 sqlalchemy exc IntegrityError IntegrityError du
  • 避免打印最后一个逗号

    我正在尝试打印这个循环而不使用最后一个逗号 我一直在谷歌上搜索这个问题 从我所看到的来看 对于这么一个小问题来说 一切似乎都过于复杂 当然有一个简单的解决方案可以避免打印最后一个逗号 如果有人能帮助我 我将不胜感激 这让我发疯 例如 它从
  • 如何获取出现频率最高的值SQL

    我有一个表 Orders id trip id order 表 Trip id hotel id bus id type of trip 和表 Hotel id hotel name 我想获取表订单中最常去的酒店的名称 SELECT hot
  • Avro 生成的类与 json 转换有关的问题 [kotlin]

    我在编组 解组时遇到一个奇怪的问题avro生成的类 我收到的错误是抛出一个不是枚举错误 除非我的班级中没有任何枚举 错误具体是这样的 com fasterxml jackson databind JsonMappingException 不
  • img 标题属性显示块而不是外来字符

    我网站上的一些图片有title包含外来字符的属性 这些字符在网站的其余部分和 HTML 源代码中正确显示 但在小浏览器标题悬停上显示不正确 悬停 别处 Source img width 288 height 145 src http www
  • 返回上传到 firebase 的文件的下载 URL

    有没有一种简单的方法来获取上传到 Firebase 的文件的下载 URL 我尝试过使用我的上传函数返回的快照 但找不到任何东西 fileref put file then function snapshot self addEntry sn
  • Django 异常:django.core.exceptions.ImproperlyConfigured:

    当我在 django shell 中运行相同的代码时 它对我来说工作得很好 但是当我启动Python解释器 Python 2 来检查一些东西时 我在尝试导入时收到错误 from django contrib auth models impo
  • 无法在 Flutter 应用程序中加载当前位置

    我正在使用地理定位器插件并获取当前的纬度和经度 但我无法在 Flutter 应用程序的 initstate 中加载它 它显示渲染错误 void initState TODO implement initState super initSta
  • 如何在 Qt 中打印 QWidget?

    我需要知道如何将 QWidget 打印为 PDF 文件 Widget QDialog 包含很多标签 一些 QPlainTextEdit 和一个背景图像 该对话框显示一张收据 其所有字段均已填写 我已经尝试使用 QTextDocument 和
  • Flutter Firebase 通过 ID 数组获取文档

    如何使用 ID 列表从集合中获取文档查询 假设我有以下内容 List
  • 使用 jQuery 检测页面加载时鼠标悬停

    我想检测加载网页时鼠标是否位于某个元素上 看来这对于 jQuery 来说是不可能的 鼠标悬停 悬停等需要鼠标移动 与获取当前鼠标位置 与元素边界进行比较 一样 我还没有看到这个具体问题被问到 但看到人们说这是不可能的 我的解决方案 使用悬停
  • Python ftplib FTP传输文件上传中处理断开连接

    如何处理 ftplib 中的断开连接 我编写了一个 Python 脚本 用于使用 ftplib 将非常大的文件上传到 FTP 服务器 我的问题是 由于文件大小的原因 上传可能需要很长时间 如果中途断网 然后 1 分钟后重新连接怎么办 我该如
  • std::map 默认值

    有没有办法指定默认值std map s operator 当键不存在时返回 虽然这并不能完全回答问题 但我已经用这样的代码规避了这个问题 struct IntDefaultedToMinusOne int i 1 std map
  • 从渲染器接收消息超时:10.000

    运行我的场景时出现以下错误 org openqa selenium TimeoutException 超时 接收超时 来自渲染器的消息 10 000 会话信息 chrome 79 0 3945 79 构建信息 版本 3 14 0 修订版 a
  • 如何继承GWT项目中所需的模块?

    我想在我的 GWT 项目中使用 GWT FXv0 5 0MS 1 jar 我将 jar 文件添加到项目路径并使用语法上的代码 现在收到未继承的错误 错误信息是 11 28 48 829 ERROR uibuilder Line 80 No
  • 尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类

    我目前正在开发一个使用 javafx 作为 UI 的应用程序 我使用的是java 9 当我从github上拉出来继续在我的新计算机上开发并编译时 所有javafx类的引用都存在编译错误 并且只有javafx类 我在外部资源中的jdk中搜索了
  • 如何在Python中单行输入n个数字[重复]

    这个问题在这里已经有答案了 就像在 C 中一样 我如何要求用户输入一个范围内的内容 下面是 C 中获取用户输入的代码 include
  • 将环境变量传递给 gradle.properties

    我有一个这样的属性设置 url localhost 3206 有没有办法像下面这样指定 url hostname 3206 我不认为 gradle properties 支持插值 但是 我建议采用另一种方法来实现此目的 在你的 gradle
  • Asp.net 表单身份验证和多个域

    我有两个域 domain1 com 和domain2 com 指向同一个asp net 网站 该网站使用asp net 内置表单身份验证 问题是 即使域指向同一网站 用户一次也只能针对一个域进行身份验证 因此 如果他首先使用 www dom