2012-03-22 23 views
3

是否可以使用代码为ServerVariable(“Something”)赋值?而不是通过IIS做到这一点?我可以在.NET中设置一个serverVariables

这样简单的事情?

Request.ServerVariables( “LOGON_USER”)= “测试”

我还发现在另一个论坛下面:

Request.ServerVaria bles.Add(名称,值)

,但我不断收到两个相同的错误: “宣言预计”

一些背景:

我试图做的是将(“LOGON_USER”)变量从一个应用程序传递给另一个应用程序(在不同的域上),以某种方式允许单点登录。我现在将隐藏变量传递给新服务器,然后将它们分配给适当的服务器变量。 我需要编辑回复或请求吗?我在这上面挥霍吗?

+0

如何在用户的两个应用程序之间的故事吗?你是否将他们从一个转移到另一个,或者他们是独立访问还是其他?我不认为你可以通过设置请求服务器属性来做到这一点 - 它们是请求标头的组合,它只存在于该请求中,而服务器环境变量不是特定于当前用户的,而仅存在于当前服务器上。 – Rup 2012-03-22 13:09:37

+0

我为他们转发到新的应用程序,这里有一个例子:http://www.eggheadcafe.com/articles/20021207.asp – 2012-03-22 13:12:23

+0

哦,OK - 但那是用['Session'(HTTP:// MSDN。 microsoft.com/en-us/library/system.web.httpcontext.session.aspx)not ['Request.ServerVariables'](http://msdn.microsoft.com/zh-cn/library/system.web.httprequest .servervariables.aspx)。它需要用户拥有相同的会话信息 - 一个默认的cookie,所以如果你需要跨域转移这个信息,你必须做其他的事情或者读取,传递和写入 - 而服务器访问相同的共享会话存储。 – Rup 2012-03-22 13:17:00

回答

2

单点登录通常不以这种方式实现的。通常情况下,您需要在第一个系统中对用户进行身份验证,创建安全令牌,然后将令牌和一些身份信息传递给第二个系统。第二个系统将验证令牌和附加数据,如果成功,则在第二个系统中验证用户(通常通过创建auth cookie)。

此链接为您提供了一种方法的概述,但你可以谷歌的其他方法: http://msdn.microsoft.com/en-us/library/ms972971.aspx

0

您可以设置服务器变量(虽然你通常会想改变的响应,而不是要求),而最有可能的地方这样做将是一个自定义HTTP模块。您可以在这里找到更多的信息:

http://learn.iis.net/page.aspx/686/setting-http-request-headers-and-iis-server-variables/

http://forums.asp.net/t/1125149.aspx

+0

谢谢。基本上我试图做的是传递(“LOGON_USER”)变量从一个应用程序到另一个,以某种方式允许单点登录。那么我是否需要编辑回复或请求?谢谢! – 2012-03-22 12:59:59

+0

如果这是一个单一的迹象,然后我会看另一种方式。 – Richard 2012-03-22 13:46:11

相关问题