14

This question is related to this one,尽管我认为我在那里有点啰嗦,无法真正得到一个好的答案。我会保持简短。

我正在开发一个接受来自 aspx 页面的表单发布的 Web 处理程序 (ashx)。当处理程序收到此表单发布时,为了做它需要做的事情,它需要知道登录的用户(User.Identity.Name),但我不能依赖浏览器发送的cookie。

我知道我可以获取 Session.SessionID 并将其放置在隐藏的表单字段中,但是一旦我的处理程序收到表单帖子,我如何使用该 SessionID 来确定登录用户的身份?

我将 StateServer 模式用于会话状态。

4

4 回答 4

3

我认为您可以在 HttpHandler 上实现IReadOnlySessionState接口

于 2008-09-11T01:11:29.440 回答
2

Jonas 在这里发布了一个很好的答案:

我可以将 ASP.Net 会话 ID 放在隐藏的表单字段中吗?

于 2008-10-27T17:30:51.733 回答
1

除非需要直接使用会话,否则您始终可以将有关登录用户身份的任何信息存储在单例字典或缓存中,并通过存储在隐藏字段中的 SessionID 引用它。我个人在这方面看到了安全问题,但不会涉及这些问题。我会考虑为这种类型的实现发布一次性身份。

于 2008-09-11T01:40:11.303 回答
0

在 HttpHandler 或 HttpModule 实现中,您不能总是从 BeginRequest 事件访问会话。您可以处理另一个事件,称为 OnAcquireRequestState。如果您在该事件中编写代码,则 HttpContext.Current.Session 不会为空。

于 2008-09-11T01:38:53.337 回答