提问人:Karl 提问时间:9/26/2023 最后编辑:marc_sKarl 更新时间:9/26/2023 访问量:51
Web 窗体 ASP.NET Forms 身份验证
Forms authentication ASP.NET webforms
问:
我有一个使用表单身份验证的 ASP.NET Web 表单应用程序。对于不需要身份验证的页面,我将它们放在一个单独的文件夹中。所有其他页面都位于主文件夹中,并使用身份验证。这一切都有效。
应用程序现在需要提供图像。因此,如果我有一个 url,例如我在数据库中查找指定的图像并提供图像。为了提供图像,我在 .我检查 url 是否是类型,并通过执行 a 和写入图像的字节来提供图像。https://mysite/{id}
id
BeginRequest
global.asax
https://mysite/{id}
response.write
当我这样做时,表单身份验证会启动并将我发送到登录页面。response.write
因此,对于 的 url,我不想进行表单身份验证,但我不知道如何在不关闭我想要身份验证的页面的身份验证的情况下关闭此类 url 的身份验证。https://mysite/{id}
有没有办法不在方法中进行表单身份验证?是否有可以在 关闭表单身份验证的属性或方法?BeginRequest
BeginRequest
答:
有几种方法:
1.(EASYONE)根据本文档,使用 web.config 中的表单身份验证配置来排除 URL。您可以为要排除的 URL 模式添加一个具有 path 属性的元素,并在该元素上设置 enabled=“false”:
<location path="images/">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
2.In BeginRequest 处理程序中,检查请求的 URL,如果它与排除的模式匹配,请调用 HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.空)、null);这将在表单身份验证模块执行之前手动设置匿名用户主体,或者您可以创建覆盖默认表单身份验证模块的自定义表单身份验证模块,并在 OnAuthenticate 方法中添加逻辑以跳过基于 URL 的身份验证。
评论