0

我正在使用 WebForms 和 Asp.Net 路由。

尝试在成员文件夹上实施安全性时,我按照此处的说明进行操作:

http://blogs.msdn.com/b/mikeormond/archive/2008/06/21/asp-net-routing-and-authorization.aspx

  private IHttpHandler GeneratePage(string VN, RequestContext RC)
  {
    string virtualPath
      = string.Format("~/Members/{0}.aspx", VN);

    if (UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath,
      RC.HttpContext.User,
      RC.HttpContext.Request.HttpMethod))
    {
      if (virtualPath != null)
      {
        return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
      }
    }
    else
    {
      throw new SecurityException();
    }

    return null;
  }
}

但是,我不只是想抛出一个安全异常,我想重定向到登录页面。我宁愿不对 a 进行硬编码,Response.Redirect而且我认为这无论如何都不是正确的方法。

将控制权传递给授权引擎并重定向到默认登录页面的“正确”方式是什么?

4

1 回答 1

1

你不能两者兼得。

抛出异常会终止代码路径。

或者,您可以调用 FormsAuthentication.RedirectToLoginPage(string extraQueryString)并传递一个参数,让您在登录页面上通知用户问题。

例如

FormsAuthentication.RedirectToLoginPage("error=authorization-failure")

当然,您需要在登录页面中编写代码来识别这一点。

于 2010-09-23T02:57:58.813 回答