我正在为ASP.NET Web应用程序开发.NET,并试图拒绝所有未经授权的用户访问我的应用程序,但只允许他们访问登录页面。
下面是我的system.web部分中的代码片段:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="60" name="APPNAME" slidingExpiration="true" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
我也在外面允许访问登录页面:
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
但是,当我没有登录时,我仍然能够访问页面,我怎么能阻止这种情况发生呢?
我甚至在Main文件夹中添加了一个Web.Config文件,该文件夹存储了以下内容的大部分网站文件:
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
但这仍然没有任何效果。
解决方案
我已经关注了asp.net(http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx)的一些优化提示,并删除了我实际需要的AnonymousIdentification httpModule。
答案 0 :(得分:6)
我认为,如果您将不同的网页放在不同的文件夹中,那么处理ASP.NET授权会更容易。这不是一个要求。它更容易管理。
如果您在VS 2010中(我不确定这是否在快递版中)请尝试使用项目菜单底部的ASP.NET配置工具。
我发现很容易通过首先使用该工具来学习web.config文件的工作方式,对安全性进行一些更改,然后继续查看它的作用。
如果您只是从VS 2010中的空白ASP.NET应用程序开始,您可以通过进行两项更改来锁定除登录和注册页面之外的所有内容:
在根web.config
中 <system.web>
<authorization>
<deny users="?" />
</authorization>
在“帐户”子文件夹中的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>
您将看到用户立即被定向到登录页面,但他们仍然可以注册。
答案 1 :(得分:2)
尝试将LoginStatus控件添加到您的页面以检查您的登录状态。
您之前可能已选中“已保存的密码”选项。使用control userpassword2命令检查并清除缓存的密码。
答案 2 :(得分:1)
您可以将新的Web.config放入需要应用权限的文件夹中。在里面做类似的事情
synchronized
或者您可能需要用<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
标签包裹<authorization>
标签。