gpt4 book ai didi

asp.net - 在 ASP.NET 2.0 WebForms 中使用 UrlRewrite 时如何优雅地处理 ReturnUrl

转载 作者:行者123 更新时间:2023-12-04 21:00:01 25 4
gpt4 key购买 nike

我有一个包含多个 .aspx 页面的文件夹,我想限制对这些页面的访问。我已将 web.config 添加到该文件夹​​中 <deny users="?"/> .

问题是,当我使用 UrlRewrite 时,ReturnUrl 是自动生成的,带有 .aspx 文件的物理路径。

有没有办法在不进行手动身份验证检查和重定向的情况下操作 ReturnUrl?有没有办法从代码隐藏或从 web.config 设置 ReturnUrl?

编辑 :该应用程序使用 ASP.NET 2.0 WebForms。我不能使用 3.5 路由。

编辑 2 :似乎从未捕获过 401 状态代码。它为 protected 页面返回 302 并使用 ReturnUrl 重定向到登录页面。它不会为 protected 页面返回 401。嗯...有趣... Ref: http://msdn.microsoft.com/en-us/library/aa480476.aspx

这让事情变得更难......我可能必须编写反向重写映射规则来正则表达式匹配 ReturnUrl 并在它不返回 401 时替换它......如果它返回 401 我可以将 RawUrl 设置为 Response.RedirectLocation 或替换 ReturnUrl与 RawUrl。

其他人有任何其他想法吗?

最佳答案

一探究竟。希望这可以帮助。

#region [ Imports ]

using System;
using System.Web;
using System.Web.Security;

#endregion

namespace Foo.Handlers
{

public class AuthModule : IHttpModule
{

#region IHttpModule Members

public void Init(HttpApplication application)
{
application.PostReleaseRequestState += delegate(object s, EventArgs e)
{
if (application.Response.StatusCode == 401)
application.Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + HttpUtility.UrlEncode(application.Request.RawUrl), true);
};
}

public void Dispose() { }

#endregion

}

}
<modules>
<add name="AuthModule" type="Foo.Handlers.AuthModule, Foo"/>
</modules>

关于asp.net - 在 ASP.NET 2.0 WebForms 中使用 UrlRewrite 时如何优雅地处理 ReturnUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com