【问题标题】:How to check session in a central place如何在中心位置检查会话
【发布时间】:2011-07-25 06:04:16
【问题描述】:

我有一个网络表单应用程序。我网站上的几乎所有页面都受登录保护。目前我正在检查所有表单的 Page_Load 事件中是否存在会话。有没有一种方法可以只在一个适用于所有页面的地方完成。

【问题讨论】:

  • TheGeek 有您问题的答案;但是您是否正在检查用户是否通过会话变量登录?如果你是,有更好的内置方法。 (例如 FormsAuthentication)

标签: c# asp.net session


【解决方案1】:

创建一个继承自 Web.UI.Page 的类。在该类中,为 Page_Load 创建一个事件并放置检查会话的代码。然后在您希望通过登录保护的所有页面上,让它们继承您创建的类。

【讨论】:

  • 你的意思是我应该在我创建的 sessionCheck 类中创建 page_load 事件?而不是在继承自 sessionCheck 类的实际页面中?
  • 你可以在这两个事件中都有这个事件。但是在您创建的继承自 Page 的类中,在 Page_Load 事件中会检查您是否登录。
  • 但是如果我在两者中都添加 page_load 事件,那么基类的 page_load 事件不会触发。
  • 你声明类抽象了吗?
  • protected override void OnLoad(EventArgs e) { // ... 在此处添加自定义逻辑 ... // 一定要调用基类的 OnLoad 方法! base.OnLoad(e); }
【解决方案2】:

最好的方法是定义一个抽象页面(比如 SessionedPageBase)并让所有其他页面都继承自它。

您可以在各个页面 Page_Load 中调用基本 Page_Load 的第一件事,或者更好地 - 创建一个事件(如其他答案中所建议的那样)。

【讨论】:

  • 如何在课堂上创建事件?你能给我举个例子吗?
  • 如果我在两者中都添加 page_load 事件,那么基类的 page_load 事件不会触发。
【解决方案3】:

正如@rkw 的评论中所建议的那样,我认为您最好为此使用表单身份验证而不是您自己的自定义机制。

如果您使用表单身份验证,则可以使用 web.config 中的条目指定哪些页面受到保护。

有关 Forms 身份验证的详细介绍,请参阅http://www.4guysfromrolla.com/webtech/110701-1.shtml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    相关资源
    最近更新 更多