C# 使用Web服务处理文件显示的身份验证

C# 使用Web服务处理文件显示的身份验证,c#,jquery,json,angularjs,file-io,C#,Jquery,Json,Angularjs,File Io,这是我第一次开发这种系统,所以很多概念对我来说都是非常新的。任何和所有的帮助都将不胜感激。我会尽可能有效地总结我正在做的事情 背景:我有一个web应用程序运行AngularJS和Bootstrap。该应用程序通过使用C#编程的web服务与服务器和数据库通信。在该网站上,用户可以上传文件并在以后使用直接链接进行引用。对文件类型没有限制(目前),所以几乎任何东西都是允许的 我的目标:拥有直接链接会给我带来很大的安全问题,因为文档/图像应该是私有数据。我希望在单击链接时验证用户的凭据,然后使用更通用的

这是我第一次开发这种系统,所以很多概念对我来说都是非常新的。任何和所有的帮助都将不胜感激。我会尽可能有效地总结我正在做的事情

背景:我有一个web应用程序运行AngularJS和Bootstrap。该应用程序通过使用C#编程的web服务与服务器和数据库通信。在该网站上,用户可以上传文件并在以后使用直接链接进行引用。对文件类型没有限制(目前),所以几乎任何东西都是允许的

我的目标:拥有直接链接会给我带来很大的安全问题,因为文档/图像应该是私有数据。我希望在单击链接时验证用户的凭据,然后使用更通用的url路径在浏览器中加载文件

--Example--
"mysite.com/attachments/1" ---> (Image)
--instead of--
"mysite.com/data/files/importantImg.jpg"
我现在的位置:不太远。我的第一个想法是添加一个页面,该页面发送服务器请求并接收文件字节流以及mime类型,我可以重新组装并呈现给用户。但是,我不知道使用发送JSON请求的web服务是否可以实现这一点,也不知道重组过程如何在客户端工作


就像我说的,我会接受所有的建议。我很想为将来的项目学习更多关于这个主题的知识,但现在我只需要指出正确的方向。

您的第一个想法是正确的,为此,您需要使用,更具体地说是
AddHeader
Write
函数。当然,这将是一个只处理文件下载的不同页面,因此在JSON web服务中它将非常好。

我认为您不希望在web服务中这样做。只需使用常规的IHttpHandler执行验证并返回数据。因此,您需要将URL“attachments/1”重写为“attachments/download.ashx?id=1”。验证访问后,将数据写入响应流。您可以使用Content Disposition标头设置文件名。

您能提供一个代码段吗?没错,我可以使用AddHeader设置“内容处置”之类的内容,但我能找到的大多数示例都是访问目标文件的文件路径。这将如何在web服务上工作?这不是我是否要使用web服务的问题,我的框架和项目先决条件实际上需要我使用。您需要将数据作为JSON字节数组发送到浏览器?那就是。。。不寻常。