2010-10-06 208 views
3

我正在开发一个.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模块,我真正需要的。

+2

您确定您尚未登录?你不只是有一个身份验证cookie仍然存在于你的机器上,记住你最后的登录? – Paddy 2010-10-06 15:50:24

+0

我刚刚清除了我的浏览器缓存/ cookies并再次尝试,并且仍然允许我访问所有内容 – Malachi 2010-10-06 15:53:04

回答

2

尝试将LoginStatus控件添加到您的页面以检查您的登录状态。

您可能以前选中了“保存的密码”选项。使用control userpassword2命令检查并清除缓存的密码。

+0

我已经添加了该内容,并生成了一个登录链接。所以我绝对没有登录。我会查看我的代码/ web.config中的任何问题。 – Malachi 2010-10-06 16:13:58

+0

我解决了它 - 请参阅上文,了解我的解决方案是什么 – Malachi 2010-10-06 16:15:56

+0

长篇文章。无论如何,好工作。 :) – bla 2010-10-06 16:33:30

6

我认为你会发现,如果你在不同的文件夹中放置不同的网页和不同的目标角色,处理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> 

什么,你会看到的是,用户立即指示到登录页面,但他们仍然可以注册。