相关疑难解决方法(0)

ASP.NET Forms Auth允许在拒绝所有其他文件时访问子目录中的特定文件

我在允许特定角色访问子目录中的特定页面时遇到问题.

我的ASP.NET应用程序有一个目录,〜/ Forms/Administration具有有限的访问权限.有一个特定的文件,〜/ Forms/Administration/Default.aspx,我想给予1个额外的用户角色访问权限,以及Admin角色.

在〜/ Forms/Administration中,我有一个web.config文件,如下所示:

   <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Administrator, User" />
            <deny users="*"/>
        </authorization>
    </system.web>

    <location path="Forms/Administration/Default.aspx">
        <system.web>
            <authorization>
                <allow roles="Administrator, User, AdditionalUser" />
            </authorization>
        </system.web>
    </location>

</configuration>
Run Code Online (Sandbox Code Playgroud)

Admin用户工作正常,但AdditionalUser总是失败.我尝试了很多东西 - 将位置列为

<location path="Forms/Administration/Default.aspx">
Run Code Online (Sandbox Code Playgroud)

并作为

<location path="~/Forms/Administration/Default.aspx">
Run Code Online (Sandbox Code Playgroud)

来自第一个通用规则的deny ="*"是先例吗?我试过改变

<deny users="*"/>
Run Code Online (Sandbox Code Playgroud)

<deny users="?"/>
Run Code Online (Sandbox Code Playgroud)

但最终会让ExtraUser访问所有内容.建议?

编辑:我尝试在通用拒绝规则之前放置位置特定允许,以防顺序重要.同样的问题.

更新:我在这里显然遗漏了一些东西:我删除了deny*config,留下了特定位置的部分.然后,我没有允许某些角色,而是将其设置为拒绝全部(*).但是,当我登录时,它并没有否认我.我甚至将规则简化为不是文件特定的,但适用于整个目录,并且它不会拒绝任何东西.但是,原始的非位置特定规则确实有效,因此我知道正在读取此配置文件.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="Forms/Administration">
        <system.web>
            <authorization>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>
Run Code Online (Sandbox Code Playgroud)

asp.net forms-authentication web-config

13
推荐指数
1
解决办法
3万
查看次数

标签 统计

asp.net ×1

forms-authentication ×1

web-config ×1