<deny user =“?”>不拒绝匿名用户访问</deny>

时间:2014-03-14 19:03:19

标签: c# asp.net .net authentication

我刚刚在我的webconfig文件中添加了这个:

 <authentication mode="Forms">
      <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">     
      </forms>      
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>

据我所知,这应该拒绝访问未记录的用户吗? 在身份验证页面中,如果我在浏览器中键入例如localhost / addInvoice(当我还没有登录时),我仍然可以访问其他页面...

有人能解决这个问题吗?提前致谢

用于身份验证的一些C#代码:

public void Logon_Click(object sender, EventArgs e)
{
    if (DAO.UserAuthentication(UserEmail.Text, UserPass.Text))
    {
        FormsAuthentication.RedirectFromLoginPage
           (UserEmail.Text, Persist.Checked);

        Response.Redirect("AddInvoice.aspx"); 
    }
    else
    {
        Msg.Text = "Invalid credentials. Please try again.";
    }
}

我的Web.config:

<?xml version="1.0" encoding="utf-8"?>
<!--
  Pour plus d'informations sur la façon de configurer votre application ASP.NET, visitez le site
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-AccountManager-6212fa8a-ff06-499e-9e90-611d289bfe62;AttachDbFilename=|DataDirectory|\aspnet-AccountManager-6212fa8a-ff06-499e-9e90-611d289bfe62.mdf;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
    <add name="AccountManager2Entities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=RAMBERT-PC\ARNAUDRAMBERT;initial catalog=AccountManager2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">     
      </forms>      
    </authentication>
   <!-- <authorization>
      <deny users="?"/>
    </authorization>-->
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
      <buildProviders>
        <add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
      </buildProviders>
    </compilation>
    <httpRuntime targetFramework="4.5" />
    <pages>
      <namespaces>
        <add namespace="System.Web.Optimization" />
        <add namespace="Microsoft.AspNet.Identity" />
      </namespaces>
      <controls>
        <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
      <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" />
      </controls>
    </pages>
    <membership>
      <providers>
        <!--
        L’appartenance ASP.NET est désactivée dans ce modèle. Activez le lien http://go.microsoft.com/fwlink/?LinkId=301889 pour en savoir plus sur la prise en charge de l'appartenance ASP.NET dans ce modèle
        -->
        <clear />
      </providers>
    </membership>
    <profile>
      <providers>
        <!--
        L’appartenance ASP.NET est désactivée dans ce modèle. Activez le lien http://go.microsoft.com/fwlink/?LinkId=301889 pour en savoir plus sur la prise en charge de l'appartenance ASP.NET dans ce modèle
        -->
        <clear />
      </providers>
    </profile>
    <roleManager>
      <!--
          L’appartenance ASP.NET est désactivée dans ce modèle. Activez le lien http://go.microsoft.com/fwlink/?LinkId=301889 pour en savoir plus sur la prise en charge de l'appartenance ASP.NET dans ce modèle
        -->
      <providers>
        <clear />
      </providers>
    </roleManager>
    <!--
            Si vous déployez un environnement cloud avec de multiples instances de serveur Web,
            vous devez changer de mode d'état de session de « InProc » à « Custom ». De plus,
            changez la chaîne de connexion nommée « DefaultConnection » pour vous connecter à une instance
            de SQL Server (y compris SQL Azure et SQL  Compact) au lieu de SQL Server Express.
      -->
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>
  <httpHandlers>
      <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false" />
      <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" /></httpHandlers>
  <httpModules />
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
<appSettings>
  <add key="Telerik.Skin" value="Office2010Silver" /></appSettings>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" />
  <handlers>
      <remove name="ChartImage_axd" />

      <remove name="Telerik_Web_UI_SpellCheckHandler_axd" />
      <remove name="Telerik_Web_UI_DialogHandler_aspx" />
      <remove name="Telerik_RadUploadProgressHandler_ashx" />
      <remove name="Telerik_Web_UI_WebResource_axd" /><add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode" /></handlers></system.webServer>
</configuration>

1 个答案:

答案 0 :(得分:0)

您是否曾尝试通过web.config中的页面拒绝用户?我之前用过这个来完成这个。

<location path="About.aspx">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>

也许这会解决问题?希望这可以帮助。

编辑:回顾你的web.config ......我注意到授权部分被注释掉了。我不确定你是否只是测试它。

<!-- <authorization>
      <deny users="?"/>
    </authorization>-->

但是,是的,在此代码取消注释后,它应该拒绝所有未经过身份验证的用户。

<authorization>
      <allow users="TestUser"/>
      <deny users="*"/>
    </authorization>

上述代码将拒绝除一个用户“TestUser”之外的所有用户。

你也可以试试..

<authorization>
  <allow users="?"/>
</authorization>