Azure ACS + 表单值存储

2023-12-14

我在我的 ASP.net MVC 3 网站(也在 Azure 中托管)中使用 Azure ACS,场景如下: 用户首先进入我的网站并填写单字段表单,然后他们需要选择提供商并登录,但首先我想存储字段值,以便当他们登录回来时我能够创建具有该值的配置文件对于登录的用户。

所以我相信当他们第一次进入网站然后离开登录并再次进入网站时,这是两个不同的会话,对吗?这就是使用会话状态(通过 SQL Server)存储的数据在登录后返回时不存在的原因,对吗?如果这是真的,那么最好的方法是什么?如果不是,那么我在存储临时数据时做错了什么,对吗?

Thanks

UPDATE:我发现 HttpContext.Application 状态可以保存数据,但我仍然不确定考虑到它在 Azure 中,在控制器中使用它是否是一个好主意,它是否可以在生产中正常工作?


您可以使用 wctx URL 参数在 WS-Federation 重定向序列中传递状态。在处理初始 POST 请求的操作中,您应该获取要保留的表单参数,然后重定向到身份提供商选择页面(这必须是自定义页面),并将表单参数附加到 URL。当用户在您的页面上选择 IP 时,您可以使用 wctx 参数再次传递该参数。 WS-Federation 被动请求者配置文件表示,当 IP 将用户重定向回您的站点时,最终应将其返回给您。

这有一些细节

http://msdn.microsoft.com/en-us/library/bb608217.aspx

Edit:当用户最终返回您的应用程序时,从请求中获取 wctx 参数。在操作代码中添加类似这样的内容:

var fam = FederatedAuthentication.WSFederationAuthenticationModule;

if (fam.CanReadSignInResponse(System.Web.HttpContext.Current.Request, true))
{
    string wctxValue = this.HttpContext.Request.Form["wctx"];
}

我的偏好是让 wcxt 参数代表一个重定向 URL(URL 编码),并将您的参数作为查询参数,因此它是以下内容的 URL 编码版本:

wctx=https://yourserver/yourapp/yourpage?yourparameter=foo

然后,从 ACS 接收重定向的操作将简单地提取 wctx 的值并对其进行重定向,而无需任何其他处理。这让事情变得简单。

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

Azure ACS + 表单值存储 的相关文章

  • 404 - 在控制器 Y 上找不到公共操作方法 X(ActionInvoker.InvokeAction 返回 false)

    这不是一个重复的问题 这个问题让我发疯 我收到典型错误 控制器 Y 上未找到公共操作方法 X 该错误返回404 Not Found 屏幕截图给了你一个好主意 该图像显示调试器在引发异常的行执行之前暂停 base HandleUnknownA
  • java.lang.IllegalArgumentException:除非 ServiceClient 使用帐户密钥凭据,否则无法创建共享访问签名

    我正在尝试使用 MSI 访问 Azure Blob 存储容器以生成共享访问签名 但每次我尝试访问时 都会收到以下错误 java lang IllegalArgumentException Cannot create Shared Acces
  • 为什么 IIS 在 RoleEntryPoint.OnStart 返回之前接受请求?

    我正在使用 Azure 示例从这里 http msdn microsoft com en us gg433178在计算模拟器上 我发现如果我做OnStart 在我的班级继承自RoleEntryPoint在 Web 角色接受 HTTP 请求之
  • @media 媒体查询和 ASP.NET MVC razor 语法冲突

    我有一个使用 Razor 视图引擎在 ASP NET MVC 中运行的大型网站 我有一个基本样式表 其中包含整个网站的所有通用样式 然而 有时我会在页面中设置特定的样式页面的内容 通常是一行或两行 我不太喜欢把 CSS 放进去因为它不是严格
  • Azure功能:无法加载文件或程序集Newtonsoft.Json

    我知道这个问题在网络和 stackoverflow 上被广泛报道 但我可以通过一些额外的帮助来解决这个问题 我收到与加载 Newtonsoft 相关的运行时错误 请参见下文 11 07 2020 18 37 17 A ScriptHost
  • Windows Azure 使用 A6 vmsize 部署云服务

    在我的云服务中 我有一个 Web 角色和辅助角色 我将 Web 角色 VM 大小更改为medium to A6 当我尝试部署到 Windows Azure 时 收到以下错误消息 s 似乎提示我错误 由于部署请求限制 无法配置此部署所需的 V
  • MVC3:一个控制器是否需要 Windows 身份验证,而第二个控制器允许匿名?

    我有一个控制器 用于在需要 Windows 身份验证的内部 Web 应用程序中呈现页面 是否存在第二个控制器 用于对系统进行基于 JSON 的查询 不需要进行 Windows 身份验证 那可能吗 看来我目前只能做其中之一 有什么建议么 我们
  • 如何在 Azure Function 中使用 TelemetryConfiguration 的依赖项注入

    我尝试在 Azure Functions 中使用依赖项注入进行 TelemetryConfiguration 在我的函数中 当我在函数构造函数中注入 TelemetryConfiguration 时 我将解决它 我想我不太明白如何在 Sta
  • 逻辑应用 blob 触发器未在子文件夹上触发

    我指的是这个反馈 在子文件夹中添加文件时触发 Azure 存储 Blob 触发器 https feedback azure com forums 287593 logic apps suggestions 20164843 azure st
  • 单个存储库的 Azure DevOps 权限

    假设我在 ADO 上创建了一个新项目 MyProject 其中 我有 2 个存储库 MyRepo1 和 MyRepo2 我想邀请其他用户向 MyRepo1 贡献代码 但不希望他们看到 MyRepo2 如何才能做到这一点 我尝试为 MyRep
  • 终止用户会话

    我有 3 个标签 主页 选项卡 1 选项卡 2 当用户启动应用程序时 它会定向到 主页 选项卡 我使用以下命令创建一个新会话HttpSession session request getSession 当用户浏览到其他选项卡时 我使用以下方
  • 如何在 PHP 中正确启动会话?

    我最近正在学习有关如何为我的网站制作自定义 CMS 的教程 我目前正在制作后端 以便用户可以创建和编辑页面 该教程有点旧 因此各种功能已被弃用 我能够修复大多数问题 除了 session register 功能 我在很多网站上看到 包括这个
  • 如何在 JSF 中使用 cookie

    我有一个基于 JSF 1 2 会话范围 Bean 的 JSF 表单 我有一个 重置 按钮 它会使会话无效 我尝试使用 cookie 来记住会话之间的会话号 不是 JSF 会话 而是我的私人会话号 但失败了 我的问题 初始化 检索和存储 co
  • 是否应该在使用 MVC 的每个视图中使用 ViewModel?

    我了解您使用 ViewModel 来存储来自其他模型和源的不同数据以在视图中使用 因为模型并不总是包含您想要的内容 我试图弄清楚为每个视图使用 ViewModel 是否合适 我问的原因是出于一致性原因 您可以有一个仅需要模型本身的视图 以及
  • ASP.NET MVC - 服务层,每个控制器操作中的单个或多个服务?

    我开始在我的 MVC 项目中实现一个服务层 以精简一些臃肿的控制器 它也有存储库 工作单元模式 我的问题是 如果您的页面有一个复杂的视图模型 其中包含大量子对象等 并且在幕后有大量逻辑发生 让您了解原始开发人员编写的控制器有近 4000 行
  • Azure 服务总线订阅者死信

    我到处寻找这方面的信息 但似乎找不到我要找的东西 我有一个天蓝色的主题 只有一个订阅 订阅的处理程序失败了一些消息 它们已被放入死信队列中 我可以访问这些消息 但我不知道如何恢复它们 我不想创建消息的副本并将其发送到主题 我特别想将其移动到
  • CodeIgniter 3.1.2 中重定向后会话数据丢失

    我有一个 CodeIgniter 应用程序仍在开发中 但我意识到当我登录并在会话中设置用户数据时 它会被设置但在重定向后消失 因此 重定向后我无法访问会话数据 这是我的登录脚本 public function login if empty
  • 如何从 PHP 中的另一个会话实例读取会话值?

    我正在 PHP 中做一些事情 我必须读取另一个会话实例的会话值 例子 浏览器1 SESSION value user1 浏览器2 SESSION value user2 Browser1 需要从特定请求中获取 user2 值 该请求还将包含
  • 在azure上发布网站时,webjobs被删除

    当我在创建了多个 Web 作业的现有网站上发布网站时 这会删除服务器上的所有文件 并且所有 Web 作业都会被删除 我认为这是因为 webjobs 存储在 App Data 文件夹中 删除 APP Data 目录后 作业也会被删除 发布时如
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正

随机推荐