是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?
Is it Possible to have ASP.NET role based form authentication and authorization without web.sitemap?
我已经制作了一个 ASP.NET 4.5.2 网络表单应用程序。最近我通过关注 this 文章实现了基于角色的表单身份验证和授权。
在这篇文章中,作者使用了一个web.sitemap
文件。这是我按照文章制作的web.sitemap文件:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Home.aspx" title="Home" description="Home Page">
<siteMapNode url="" title="Patients and Physician" description="Patient and Physician Details">
<siteMapNode url="~/EnrollPatient.aspx" title="Enroll Patient" description="EnrollPatient page" />
<siteMapNode url="~/EnterPatientDiagnosis.aspx" title="Enter Patient Diagnosis" description="Enter Patient Diagnosis Page" />
<siteMapNode url="ViewPatientInformation.aspx" title="View Patient Information" description="View Patient Information Page" />
<siteMapNode url="~/SearchPhysician.aspx" title="Search Physician" description="Search Physician Page" />
</siteMapNode>
<siteMapNode url="~/javascript:;" title="Admin" description="AdminPanel">
<siteMapNode url="~/Admin/AddPhysician.aspx" title="Add Physician" description="Add Physician Page" />
<siteMapNode url="~/Admin/AdminPanel.aspx" title="Admin Panel" description="User Moditification" />
</siteMapNode>
<siteMapNode url="~/" title="Login/Register" description="Login Or Register">
<siteMapNode url="~/Login.aspx" title="Login" description="Login" />
<siteMapNode url="~/Register.aspx" title="Register" description="Register" />
</siteMapNode>
</siteMapNode>
</siteMap>
这是我的 web.config 文件的一部分:
<system.web>
<authentication mode="Forms">
<forms defaultUrl="~/Home.aspx" loginUrl="~/login.aspx" slidingExpiration="true" timeout="2880"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<siteMap enabled ="true" defaultProvider="SiteMap">
<providers>
<add name="SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
<system.web>
根据我在 Internet 上发现的内容,它用于填充 <asp:Menu>
控制项。虽然,我没有使用任何 <asp:Menu>
控件。
第一个问题,web.sitemap
对授权有影响吗?在 <provider>
部分做了一些改动,我可以不使用 web.sitemap
文件吗?
我的第二个问题是,~/javascript:;
在第三个父 SiteMapNode
中做什么。
不,站点地图对授权没有影响。在站点地图中,您可以通过添加角色将安全修整添加到菜单中。
您可以通过在 web.config 文件中包含 <authorization>
元素来限制对您网站(或其部分内容)的访问。一个很好的概述提供了这个 link。以下代码段仅授予管理员对该文件夹的访问权限:
<authorization>
<allow roles="Administrators" />
<deny users="*"/>
</authorization>
所以为了保护您的网站,请使用 <authorization>
元素。如果您不需要站点地图,可以通过从 web.config:
中删除此部分来将其删除
<siteMap enabled ="true" defaultProvider="SiteMap">
<providers>
<add name="SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
此外,您还可以删除站点地图文件。有关 ASP.NET 中站点地图的详细信息,请参阅此 link。
我已经制作了一个 ASP.NET 4.5.2 网络表单应用程序。最近我通过关注 this 文章实现了基于角色的表单身份验证和授权。
在这篇文章中,作者使用了一个web.sitemap
文件。这是我按照文章制作的web.sitemap文件:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Home.aspx" title="Home" description="Home Page">
<siteMapNode url="" title="Patients and Physician" description="Patient and Physician Details">
<siteMapNode url="~/EnrollPatient.aspx" title="Enroll Patient" description="EnrollPatient page" />
<siteMapNode url="~/EnterPatientDiagnosis.aspx" title="Enter Patient Diagnosis" description="Enter Patient Diagnosis Page" />
<siteMapNode url="ViewPatientInformation.aspx" title="View Patient Information" description="View Patient Information Page" />
<siteMapNode url="~/SearchPhysician.aspx" title="Search Physician" description="Search Physician Page" />
</siteMapNode>
<siteMapNode url="~/javascript:;" title="Admin" description="AdminPanel">
<siteMapNode url="~/Admin/AddPhysician.aspx" title="Add Physician" description="Add Physician Page" />
<siteMapNode url="~/Admin/AdminPanel.aspx" title="Admin Panel" description="User Moditification" />
</siteMapNode>
<siteMapNode url="~/" title="Login/Register" description="Login Or Register">
<siteMapNode url="~/Login.aspx" title="Login" description="Login" />
<siteMapNode url="~/Register.aspx" title="Register" description="Register" />
</siteMapNode>
</siteMapNode>
</siteMap>
这是我的 web.config 文件的一部分:
<system.web>
<authentication mode="Forms">
<forms defaultUrl="~/Home.aspx" loginUrl="~/login.aspx" slidingExpiration="true" timeout="2880"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<siteMap enabled ="true" defaultProvider="SiteMap">
<providers>
<add name="SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
<system.web>
根据我在 Internet 上发现的内容,它用于填充 <asp:Menu>
控制项。虽然,我没有使用任何 <asp:Menu>
控件。
第一个问题,web.sitemap
对授权有影响吗?在 <provider>
部分做了一些改动,我可以不使用 web.sitemap
文件吗?
我的第二个问题是,~/javascript:;
在第三个父 SiteMapNode
中做什么。
不,站点地图对授权没有影响。在站点地图中,您可以通过添加角色将安全修整添加到菜单中。
您可以通过在 web.config 文件中包含 <authorization>
元素来限制对您网站(或其部分内容)的访问。一个很好的概述提供了这个 link。以下代码段仅授予管理员对该文件夹的访问权限:
<authorization>
<allow roles="Administrators" />
<deny users="*"/>
</authorization>
所以为了保护您的网站,请使用 <authorization>
元素。如果您不需要站点地图,可以通过从 web.config:
<siteMap enabled ="true" defaultProvider="SiteMap">
<providers>
<add name="SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
此外,您还可以删除站点地图文件。有关 ASP.NET 中站点地图的详细信息,请参阅此 link。