我刚刚在我的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="data source=RAMBERT-PC\ARNAUDRAMBERT;initial catalog=AccountManager2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 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>
答案 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>