【问题标题】:Can't determine if my asp.net session implementation is correct无法确定我的 asp.net 会话实现是否正确
【发布时间】:2015-06-19 02:47:28
【问题描述】:

我对在 asp.net Web 应用程序中的会话实现感到非常困惑。我的逻辑是一旦用户输入用户名+密码,我验证凭据,然后使用一些用户信息创建一个新会话除非他/她经过身份验证,否则访问这些资源]。我会在每个请求和其余请求上验证这一点。这是我的问题。我在网站上有很多地方都有 html 链接,如果我有这样的链接,我会读到

<a href='resource1.aspx'>resource 1</a>

这将生成一个新的会话 id,因此实际上使现有的会话 id 无效,在我的情况下,这将被视为会话过期并且用户被发送到登录页面。在阅读这个问题时,我遇到了一个 asp.net API 方法[

Response.ApplyAppPathModifier(url);

] 将会话 ID 添加到每个请求,从而解决每个链接的新会话 ID 生成。虽然它解决了会话中断问题,但它确实在所有 url 旁边添加了会话 ID,现在可以在源代码中看到会话 ID(查看网页源代码)。我真的不想使用 cookie 并且想将会话用于用户会话...有人可以帮我创建一个可以按照我希望的方式工作的系统吗?如果我做的完全不正确,我真的很感激详细的讨论,如果可能的话,可以举一些例子……非常感谢你……

【问题讨论】:

  • 您为什么要实施会话?已经有一个 Session 类正是为此目的而构建的(并且不会通过单击链接而失效,因为它是基于 cookie 的)。

标签: c# asp.net session


【解决方案1】:

您似乎正在尝试使用 cookieless sessions 向所有链接添加会话 ID,以便能够跟踪会话。

另一种(更常见、标准和 IMO 安全)方法是使用普通会话,它会自动创建会话 cookie(当您使用 .Session 对象时),并使用它来确定当前会话。如果您不想要 cookie,则必须坚持使用 cookieless,以及 url 中的会话 id。

【讨论】:

    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多