【问题标题】:Get session cookie name获取会话 cookie 名称
【发布时间】:2011-05-17 16:21:39
【问题描述】:

是否可以获得中等信任级别的会话 cookie 名称?下面的代码在完全信任的情况下工作,但在中等信任级别会引发安全异常。

string sessionCookieName = ((SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState")).CookieName;

【问题讨论】:

  • 我使用 java 小程序,需要将会话名称和会话 ID 传递给它,以在小程序向 Web 服务器发出请求时保留会话值。

标签: asp.net session sessionid session-cookies


【解决方案1】:

您可以使用 Request 对象中的 HTTP_COOKIE 服务器变量来获取请求中包含的 cookie 字符串。

string cookieString = Request.ServerVariables["HTTP_COOKIE"]

如果您想要从 web.config 获取会话 cookie 名称,为什么不在 appSettings 部分添加一个简单的条目,其中包含 会话 cookie 名称强>?

    <appSettings>       
        <add key="SessionCookieName" value="__SessionCookieName"/>
    <appSetting>

    <sessionState cookieName="__SessionCookieName"  />        

然后就可以使用下面的代码读取web.config设置值了:

public static bool SessionCookieName
{
    get { return ConfigurationManager.AppSettings["SessionCookieName"]; }
} 

【讨论】:

  • 感谢您的帮助!我希望有一些像我们一样的属性用于 SessionID - Session.SessionID,比如 Session.SessionCookieName。但似乎没有简单的方法可以做到这一点:(
  • @Andrey:还考虑到对于 ASP.Net,有两种 cookie 一种用于身份验证,另一种用于会话。 HTTP_COOKIE 服务器变量包含两者。
  • 对于其他人 - @ArceBrito 的解决方案不遵守 DRY 原则(不要重复自己)......因此如果开发团队在这两个地方都存在更新失败的风险不知道需要。恕我直言,如果可能的话,最好限制一个条目(并且不影响性能)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2012-05-30
  • 2020-07-24
  • 1970-01-01
相关资源
最近更新 更多