我使用authentication mode="Forms"
创建了一个Asp.net Web项目。我的登录工作完美。
现在的问题是,我在网站中只有授权用户可以使用的链接。该链接的pdf文件可能不存在。
我想要做的是使用HttpWebRequest
验证pdf的可用性。由于pdf文件仅适用于授权用户(web.config/location/system.web/authorization
),因此我必须将HttpWebRequest
标记为authrorized。但是我目前没有logincredentials(只有当用户登录并且.net框架没有得到用户的密码时)
有谁知道如何使用新的HttpWebRequest发送已经建立的授权?
感谢
MOE
答案 0 :(得分:0)
重新阅读你的问题。据我所知,您有一个包含PDF的站点A,该PDF由表单身份验证保护。您有另一个没有身份验证的站点B,并且您希望在站点B上执行某些服务器端操作,具体取决于A上的链接是否存在。
要执行此操作,您可以创建HttpWebRequest并检查状态代码。 401表示链接存在但需要身份验证。 404意味着它不存在。
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
if (myHttpWebResponse.StatusCode == HttpStatusCode.Unauthorized)
{
// link exists, requires authentication
}
else if (myHttpWebResponse.StatusCode == HttpStatusCode.NotFound)
{
// link does not exists
}
}
或者,您可以使用具有已知凭据的服务帐户并对请求进行身份验证。使用HttpWebRequest进行表单身份验证并不容易,因为表单使用了您需要复制的cookie。
我不得不说以这种方式设计应用程序并不是一个好主意,你应该明确地考虑缓存。这些类型的服务器端调用会带来性能损失,并且无法很好地扩展。
答案 1 :(得分:0)
当时我找不到重新发送身份验证的解决方案,所以如果用户有权访问某个文件到自己的http处理程序,我就会移动验证。 现在我可以生成通过http-handler可访问的pdf文件的链接,并可以通过httprequest.user对象验证processrequest中的用户。