是否应在ASP.Net页面加载时检查会话?
页面加载,作为一个由两个单词组成的句子,表示加载页面时,表示加载所有元素时 假设我有一个名为是否应在ASP.Net页面加载时检查会话?,asp.net,session,Asp.net,Session,页面加载,作为一个由两个单词组成的句子,表示加载页面时,表示加载所有元素时 假设我有一个名为Ask.aspx的页面,该页面只允许已登录的用户使用,因此从技术上讲,我将编写如下内容: if(Session["id"]==null) Response.Redirect("Login.aspx"); 这意味着,我在页面加载后测试会话,理论上,我认为这听起来是错误的,现在我当然不会注意到它,它会很快,我会尝试访问页面,然后我被重定向到Login.aspx,但是。。。在页面加载方法上测试会话是否
Ask.aspx
的页面,该页面只允许已登录的用户使用,因此从技术上讲,我将编写如下内容:
if(Session["id"]==null)
Response.Redirect("Login.aspx");
这意味着,我在页面加载后测试会话,理论上,我认为这听起来是错误的,现在我当然不会注意到它,它会很快,我会尝试访问页面,然后我被重定向到Login.aspx,但是。。。在页面加载方法上测试会话是否正确 是页面生命周期的一部分。当服务器加载页面时调用它,而不是当客户端加载页面时调用它
所以这是检查会话变量的正确位置
您实际上是在说:在我将页面发布回客户端之前,请检查我是否为该会话设置了ID
属性。。。如果我没有-告诉客户端重定向到Login.aspx页面
这是做这件事的正确方法
我建议你也读一下。它与Response.Redirect
的区别在于,在Server.Transfer
中,服务器本身“重定向”到另一个页面,并将新页面的结果输出回客户端(客户端不知道)。这是页面生命周期的一部分。当服务器加载页面时调用它,而不是当客户端加载页面时调用它
所以这是检查会话变量的正确位置
您实际上是在说:在我将页面发布回客户端之前,请检查我是否为该会话设置了ID
属性。。。如果我没有-告诉客户端重定向到Login.aspx页面
这是做这件事的正确方法
我建议你也读一下。它与
Response.Redirect
的区别在于,在Server.Transfer
中,服务器本身“重定向”到另一个页面,并将新页面的结果输出回客户端(客户端不知道)。如果您试图限制对特定页面的访问,您最好使用表单身份验证
它的设置相当简单,并且允许在将请求传递到asp.net管道之前检查凭据。在您所做的工作中,在请求被拒绝之前,您的页面将经历整个生命周期(控件被渲染并绑定到数据、访问数据库、调用web服务等)。根据您的情况,这可能成本高昂,而且无法很好地扩展
编辑:您还可以在global.asax中连接到
acquisiteRequestState
事件。这也将节省整个页面生命周期。如果您试图限制对特定页面的访问,最好使用表单身份验证
它的设置相当简单,并且允许在将请求传递到asp.net管道之前检查凭据。在您所做的工作中,在请求被拒绝之前,您的页面将经历整个生命周期(控件被渲染并绑定到数据、访问数据库、调用web服务等)。根据您的情况,这可能成本高昂,而且无法很好地扩展
编辑:您还可以在global.asax中连接到acquisiteRequestState
事件。这也将节省整个页面生命周期