web.config授权拒绝未授权
问题描述:
我正在开发一个.NET的ASP.NET Web应用程序,并试图拒绝所有未经授权的用户访问我的应用程序,但只允许他们登录页面。web.config授权拒绝未授权
下面是这是我的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>
不过我当我没有登录时仍然能够访问页面,我怎么能阻止这种情况发生?
我甚至还添加了一个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 HTTP模块,我真正需要的。
答
我认为你会发现,如果你在不同的文件夹中放置不同的网页和不同的目标角色,处理ASP.NET授权要容易得多。这不是要求。这只是更容易管理。
如果您在VS 2010中(我不确定这是否在快速版本中),请尝试使用项目菜单底部的ASP.NET配置工具。
我发现很容易通过使用该工具了解web.config文件的工作方式,首先对安全性进行了一些更改,然后查看它做了什么。
如果你只是在2010年VS空白的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>
什么,你会看到的是,用户立即指示到登录页面,但他们仍然可以注册。
您确定您尚未登录?你不只是有一个身份验证cookie仍然存在于你的机器上,记住你最后的登录? – Paddy 2010-10-06 15:50:24
我刚刚清除了我的浏览器缓存/ cookies并再次尝试,并且仍然允许我访问所有内容 – Malachi 2010-10-06 15:53:04