web.config授权拒绝未经授权

Mal*_*chi 3 .net asp.net authorization .net-4.0

我正在开发.NET for ASP.NET Web应用程序,并试图拒绝所有未经授权的用户访问我的应用程序,但只允许他们访问登录页面.

下面是我的system.web部分中的代码片段:

<authentication mode="Forms">
   <forms loginUrl="Login.aspx" timeout="60" name="APPNAME" slidingExpiration="true" />
</authentication>
<authorization>
   <deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

我也在外面允许访问登录页面:

  <location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

但是,当我没有登录时,我仍然可以访问页面,我怎么能阻止这种情况发生?

我甚至在Main文件夹中添加了一个Web.Config文件,该文件夹存储了大部分网站文件,其内容是:

<?xml version="1.0"?>
<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但这仍然没有任何效果.

解

我已经关注了asp.net的一些优化技巧(http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx)并删除了我实际需要的AnonymousIdentification httpModule.

Chr*_*mez 6

我想你会发现,如果你把不同的网页放在不同的文件夹中,那么处理ASP.NET授权要容易得多.这不是一个要求.它更容易管理.

如果您在VS 2010中(我不确定这是否在快速版本中)请尝试使用"项目"菜单底部的"ASP.NET配置"工具.

我发现很容易通过首先使用该工具来学习web.config文件的工作方式,对安全性进行一些更改,然后继续查看它的作用.

如果您只是从VS 2010中的空白ASP.NET应用程序开始,您可以通过进行两项更改来锁定除登录和注册页面之外的所有内容:

在根web.config中

 <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
Run Code Online (Sandbox Code Playgroud)

在Account子文件夹中的web.config中

<?xml version="1.0"?>
<configuration>

  <location path="Register.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

  <system.web>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>

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

您将看到的是,用户立即被定向到登录页面,但他们仍然可以注册.