dde*_*ant 3 c# asp.net response.redirect
我有一个中间类,为我需要身份验证的所有页面扩展System.Web.UI.Page.该类主要进行自定义身份验证处理.
当访问权限不足的用户尝试访问页面时,我尝试将用户重定向回登录页面,同时防止执行任何其他页面事件(即Page_load).想到的第一个解决方案是Response.Redirect的默认实现.当然,这样做的缺点是抛出ThreadAbortExceptions的可能性.
所以我的问题是这样的:在页面生命周期中何时(如果有的话)执行Response.Redirect()实际上是安全的,而不会抛出ThreadAbortException?
public class CustomPage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!IsValid())
Response.Redirect("login.aspx", true);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您将true作为第二个参数传递,它永远不会"安全" - 它将始终抛出异常.内部Response.Redirect()调用Response.End(),直接中止当前线程.
截断HttpRequest没有抛出异常的唯一"安全"方法是使用HttpApplication.CompleteRequest(),但这将导致当前请求中的进一步代码执行.
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |