如何为基于windows验证的站点的某个页面、文件或文件夹单独设置匿名访问
在MOSS的项目中,我们经常碰到要单独为基于windows验证的站点的某个页面、文件或文件夹单独设置匿名访问即不登录就可以直接访问。比如说站点的A的某些图片或文件URL存在B站点下的文件夹下。此时访问A站点需要登录2次,因为A站点需要登录一次。但是图片或文件在B站点下的也需要在认证登录一次(说到这里人有人会moss文件都在数据库里头,其实这个情况根据自己业务来决定的。也许在某些情况下必须放到文件夹下,比如大文件,还有比如特定的某些上传组件或操作组件,上传文件存在文件夹下)。为了满足登录一次(当然还有其他情况,比如不需要登录一次可以直接访问,比如自己变相改造windows登录界面的,这个问题我在后面博客会写到。),因此有必要对单个文件或页面或文件夹进行匿名访问设置。
打开IIS管理里界面,我这里是IIS7.5为例子
1、单个文件或页面匿名访问设置
如我想设置login.htm为匿名访问。打开站点如下图:
选中login.htm右键弹出如下
选中【切换到功能视图】
选中操作完毕后
选中login.html,选择右边【功能视图】-【身份验证】,启用:匿名身份验证,如下图:
需要注意点如果login.htm页面引用了其他文件夹,比如图片、样式、脚本等文件夹也需要匿名设置,具体设置请看下面的文件夹匿名访问设置。
这里我的login.htm引用了images文件夹下的图片
2、文件夹匿名访问设置
接着上面的来,这里以images文件夹为例子,来说明如何对文件夹设置匿名访问,如下图:
找到images文件夹选中他。在右边【功能视图】-【身份验证】如下图:
进入后设置启用匿名访问,如下图:
说道这里大家以为说完了,其实基本差不多。但是有个时候我们自己开发的.NET基于windows验证的网站,可能在web.config做了如下设置。如下图
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
那此时经过上面设置步骤后,还需要在该站点的web.config对如上的文件或文件夹进行如下设置:
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
设置后保存。此时匿名设置才算成功。自己可以去测试下。