【发布时间】:2012-03-25 12:31:53
【问题描述】:
我正在开发一个 ASP.Net 应用程序(内联网),它需要用户进行身份验证才能访问门户。
目前,我将 Employee 对象保存到 InProc Session State 中,一旦身份验证成功。然后在 Master Page 的 PageLoad 方法中检查 Employee 的 Session 是否为空(null),这意味着当前请求没有经过身份验证,然后我重定向到 Login 页面。
母版页加载:
if (Session["Employee"] == null) Response.Redirect("~/Login.aspx");
我还几乎在每个页面中都使用员工会话来获取有关已登录员工或其权限级别等的一些详细信息..
我的问题:
- 上述技术是否适合处理这种情况?
- 有时 Session 状态在服务器被回收(丢失),所以如果我在任何 chlid 页面的 PageLoad 中调用 Session 状态,而 Session 为空,它会抛出异常,因为 Master检查会话是否存在的页面 onLoad 方法仅在子页面 onLoad 方法之后运行。如何以及在哪里可以在统一的地方检查会话是否存在?因为我不想每次访问 Session 状态时都检查 Session 是否存在。
- 是否可以在会话结束后触发方法?我在 Global.asax 中尝试了 Session_End,但它不允许我调用任何方法或重定向到页面。
谢谢,
【问题讨论】: