【问题标题】:Fill a session variable from windows app using web browser control使用 Web 浏览器控件从 Windows 应用程序填充会话变量
【发布时间】:2014-02-05 14:28:18
【问题描述】:

我有一个包含 Web 浏览器的 Windows 应用程序,在用户使用 Windows 应用程序登录后,他被重定向到使用 Web 浏览器控件的网站。

我的问题是,我可以向这个网站发送会话变量吗?

【问题讨论】:

    标签: c# .net winforms session-variables


    【解决方案1】:

    您不能直接这样做,因为会话变量存在于您的应用程序服务器上,该服务器与您的 Windows 应用程序完全断开连接。

    您可以调用一个设置变量的简单 URL。示例:

    http://www.mywebsites/session.aspx?additem=test
    

    然后在页面 session.aspx 中添加如下代码

    HttpContext.Current.Session.Add("mykey", HttpContext.Current.Request.QueryString["additem"]);
    

    您只需确保与用户会话相同的会话 cookie 可用,否则它将被添加到不同的会话中。

    但这并不是说这并不完全安全,因为您现在向外部人员开放会话对象,以便在其中放置他们想要的任何值。

    【讨论】:

    • 如果不使用会话,如何在不使用查询字符串的情况下将数据发送到网站?
    • 您可以将值发布到网站。无论哪种方式,您的网站都有一个 HTTP 端点,您需要通过 HTTP 发送数据以在那里获取一些数据
    【解决方案2】:

    听起来你在做准SSO

    如果登录由网站本身处理,请设置会话 ID(例如在 cookie 中),在登录时设置会话变量,并在随后通过应用程序与网站的交互中识别您的会话(例如使用 cookie)浏览器控件。

    如果登录不是由网站本身处理,则考虑在现有登录步骤之后对网站进行级联/辅助登录(即类似地设置会话 ID 并能够随后在与网站的交互中通过应用的浏览器控件)。

    或者考虑将您的应用和您的网站与真正的 SSO 集成 - 例如。 Shibboleth。环顾网络,您会发现很多关于利用 SSO with .NET 的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 2010-10-18
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多