应该在ASP.Net中的页面加载上检查会话吗?

时间:2012-12-23 13:44:31

标签: asp.net session

页面加载,作为2个单词的句子,表示页面加载时,表示加载所有元素时。

假设我有一个名为Ask.aspx的页面,此页面仅允许已登录的用户,因此从技术上讲,我会写这样的内容:

if(Session["id"]==null)
    Response.Redirect("Login.aspx");

这意味着,我正在测试页面加载后的会话,理论上,我觉得这听起来不对,现在我当然不会注意到它,它会很快,我会尝试访问页面,然后我被重定向到Login.aspx,但是...测试Session on Page Load方法是否正确?

2 个答案:

答案 0 :(得分:3)

Page_Load是页面生命周期的一部分。当 服务器 加载页面时调用它,而不是在客户端加载页面时调用...

所以这个检查会话变量的正确位置......

你实际上在说:在我将页面发回客户端之前,检查我是否为此会话设置了ID属性...如果我没有 - 告诉客户端重定向到Login.aspx页面......

这是这样做的正确方法......

我建议你也阅读Server.Transfer。它与Response.Redirect之间的区别在于Server.Transfer在服务器本身“重定向”到另一个页面并将新页面的结果输出回客户端(客户端不知道它)。

答案 1 :(得分:1)

如果您尝试限制对特定页面的访问,最好使用表单身份验证。

http://support.microsoft.com/kb/301240

设置相当容易,它允许在请求传递到asp.net管道之前检查凭据。在您正在做的事情中,您的页面会在请求被拒绝之前经历整个生命周期(控件是数百并绑定到数据,访问数据库,调用Web服务等)。根据您的具体情况,这可能代价高昂且无法很好地扩展。

编辑:您还可以访问global.asax中的AcquireRequestState事件。这也将节省整个页面生命周期。