Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET表单通过查询字符串进行身份验证_Asp.net_Query String_Membership - Fatal编程技术网

ASP.NET表单通过查询字符串进行身份验证

ASP.NET表单通过查询字符串进行身份验证,asp.net,query-string,membership,Asp.net,Query String,Membership,我目前在IIS 7上运行ASP.NET 3.5 SP1。我使用.NET成员身份启用了表单身份验证,并设置了一些文件夹,这些文件夹根据我创建的角色进行限制。例如,如果匿名访问者试图访问该文件,他/她将被重定向到登录页面,如预期的那样。到目前为止还不错 我想做的是通过允许访问者在查询字符串中指定他们的登录凭据来提供对受保护文件的访问,仅在以下行中: 这可能吗?您应该能够编写一个http模块来拦截请求并基于查询字符串对用户进行身份验证。但是,为了完整起见,我想问一下,以明文形式向用户提供用户名和(特

我目前在IIS 7上运行ASP.NET 3.5 SP1。我使用.NET成员身份启用了表单身份验证,并设置了一些文件夹,这些文件夹根据我创建的角色进行限制。例如,如果匿名访问者试图访问该文件,他/她将被重定向到登录页面,如预期的那样。到目前为止还不错

我想做的是通过允许访问者在查询字符串中指定他们的登录凭据来提供对受保护文件的访问,仅在以下行中:


这可能吗?

您应该能够编写一个http模块来拦截请求并基于查询字符串对用户进行身份验证。但是,为了完整起见,我想问一下,以明文形式向用户提供用户名和(特别是)密码是否是一个好主意。

您可以轻松创建一个下载页面,对用户进行身份验证,然后将其转发到请求的文件。比如导航到Download.aspx?user=username&pass=pwd&file=foo.txt


但不建议这样做。您不应该要求用户通过URL传递登录信息。

根据您对其他问题的评论,第二个答案是,您可以简单地将下载页面放在一个目录中。子文件夹可以有一个web.config,允许未经身份验证的用户访问:-)中的内容

比如:

<configuration>
   <system.web>
      <authorization>
         <allow users="*" />
      </authorization>
   </system.web>
</configuration>


谢谢你的快速回答,Joel。我以前从未编写过http模块,但我将继续使用该路径,并让您知道它是如何工作的!顺便说一句,我想有人会提出安全问题:-)我真的不打算与网站的大多数用户共享此功能。目标是简单地允许我的站点上的一个小部件访问该文件(它以URL作为输入),并且我为这个小部件指定的用户角色非常严格,因此不会公开任何关键数据。我想这至少可以为小部件使用的文件提供某种程度的安全性,虽然我承认这肯定不是万无一失的。我知道这是一篇老文章,但请允许我指出,这也可以通过使用密码+时间戳(例如IP)加密用户名的concat,然后在接收端解密和解析来实现。你也可以用换盐来进一步收紧。谢谢你的反馈,丹!见我上面关于安全性的评论。我真正的困境是我需要传递一个我的小部件可以访问的URL(传递一个本地路径是很理想的,但是因为它是第三方小部件,所以它必须是一个web URL)。