【发布时间】:2014-02-05 14:28:18
【问题描述】:
我有一个包含 Web 浏览器的 Windows 应用程序,在用户使用 Windows 应用程序登录后,他被重定向到使用 Web 浏览器控件的网站。
我的问题是,我可以向这个网站发送会话变量吗?
【问题讨论】:
标签: c# .net winforms session-variables
我有一个包含 Web 浏览器的 Windows 应用程序,在用户使用 Windows 应用程序登录后,他被重定向到使用 Web 浏览器控件的网站。
我的问题是,我可以向这个网站发送会话变量吗?
【问题讨论】:
标签: c# .net winforms session-variables
您不能直接这样做,因为会话变量存在于您的应用程序服务器上,该服务器与您的 Windows 应用程序完全断开连接。
您可以调用一个设置变量的简单 URL。示例:
http://www.mywebsites/session.aspx?additem=test
然后在页面 session.aspx 中添加如下代码
HttpContext.Current.Session.Add("mykey", HttpContext.Current.Request.QueryString["additem"]);
您只需确保与用户会话相同的会话 cookie 可用,否则它将被添加到不同的会话中。
但这并不是说这并不完全安全,因为您现在向外部人员开放会话对象,以便在其中放置他们想要的任何值。
【讨论】:
听起来你在做准SSO。
如果登录由网站本身处理,请设置会话 ID(例如在 cookie 中),在登录时设置会话变量,并在随后通过应用程序与网站的交互中识别您的会话(例如使用 cookie)浏览器控件。
如果登录不是由网站本身处理,则考虑在现有登录步骤之后对网站进行级联/辅助登录(即类似地设置会话 ID 并能够随后在与网站的交互中通过应用的浏览器控件)。
或者考虑将您的应用和您的网站与真正的 SSO 集成 - 例如。 Shibboleth。环顾网络,您会发现很多关于利用 SSO with .NET 的资源。
【讨论】: