文件夹中的web.config允许全部或无用户身份验证

时间:2013-08-13 11:31:26

标签: asp.net authentication iis-7 web-config location

我有一个包含多个调查aspx页面的文件夹。我必须在这些aspx页面上设置权限。有5个不同的页面,只有一个允许某些用户访问。我添加了一个web.config文件来允许和拒绝用户,但它不起作用。如果我允许我的用户名并添加deny="?"我没有访问权限,但是如果我添加了另一个用户,请取出我的deny选项,我获得登录系统的权限。如果我拒绝,我可以访问,但随后所有用户都可以访问该页面。

添加我的用户凭据并拒绝我无法访问的所有匿名用户。有人可以指出我正在做错的方向吗? 可能是因为它没有阅读或获取我的Windows登录凭据吗?我正在使用visual studio 2012,实体框架。

这就是我所做的:

   //Web Config that allows and denies:
   <?xml version="1.0"?>
        <configuration>
        <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
     </system.web>

    <location path="QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="DomainName\User2" />
        <deny users="?" /> 
      </authorization>
    </system.web>
    </location>
    </configuration>

我已将我的身份验证模式设置为Windows。

EDIT 似乎权限设置不正确。但它仍然无法正常工作。当我拒绝*时,但允许USER1即使提示登录请求,用户也无法访问。登录窗口对话框即使已使用访问权限,也会继续弹出3次。让它否认? (匿名)允许每个人都有权访问,即使我拿出拒绝并且只有USER1的allow标签,其余的用户仍然可以访问...我现在在本地运行,但即使在IIS上设置(Windows和基本身份验证)的身份验证完全相同....

EDIT 这是我正在使用的实际代码。此路径中只允许3个用户“”。此web.config文件位于调查文件夹中,包含5种不同类型的调查。只有这一项调查应该允许某些用户,其余的调查任何人都可以访问....

     <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>

  <location path="QualityCheckSurvey.aspx">
    <system.web>

      <authorization>
        <deny users="?" />
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>

    </system.web>
  </location> 

在应用程序根目录中的主web.cofin中,我已将身份验证模式设置为windows:

     <authentication mode="Windows">

<!--<forms loginUrl="~/Account/Login.aspx" timeout="2880" />-->
    </authentication>

3 个答案:

答案 0 :(得分:13)

关于你的问题,你说你有一个文件夹名称但在web.config上你只给出了路径上的文件名。使用下面的foldername / filename.aspx。使用deny users =“*”而不是deny users =“?'

<location path="foldername/QualityCheckSurvey.aspx">
    <system.web>
        <authorization>
            <allow users="DomainName\User2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

修改

这看起来在同一个应用程序中有多个web.config文件。为了避免混淆,只需删除调查文件夹和根文件夹web.config上的那个,添加此代码。

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <authentication mode="Windows" />
    </authorization>
  </system.web>

  <location path="survey/QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location> 

我假设调查文件夹位于根文件夹中。

答案 1 :(得分:0)

<deny users="?" /> 
<allow users="DomainName\User2" />
<deny users="*" /> 

答案 2 :(得分:0)

如果在创建项目后将Windows身份验证添加到项目

,则修复此错误

那是满口的。当我将Windows身份验证添加到现有项目时,我遇到了这个问题。在它运作之前我需要做几件关键事情:

1.在解决方案资源管理器中,单击项目,然后按F4。这应该打开Project属性。
2.在项目属性中和开发服务器下,进行以下更改:
  - 匿名身份验证:已禁用
   - Windows身份验证:已启用
3.在Web.config下的<system.web>中包含以下内容:

<authorization>
  <allow users="DOMAIN\user"/>
  <deny users="*"/>
</authorization>

4。仍然在Web.config下的<appSettings>

<add key="owin:AutomaticAppStartup" value="false"/>


这对我有用。如果我做错了,请告诉我 希望这将有助于在创建项目后使用Windows身份验证的未来个人。