是否可以在没有web.sitemap的情况下进行基于ASP.NET角色的表单身份验证和授权?

时间:2017-07-18 10:00:39

标签: c# asp.net authentication authorization user-roles

我制作了一个ASP.NET 4.5.2 Web表单应用程序。最近,我通过以下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>

我在互联网上发现它用于填充<asp:Menu>控制项目。虽然,我没有使用任何<asp:Menu>控件。

我的第一个问题是,web.sitemap对授权有影响吗?如果<provider>部分发生了一些变化,我是否可以使用web.sitemap文件?

我的第二个问题是~/javascript:;在第三位父SiteMapNode中做了什么。

1 个答案:

答案 0 :(得分:1)

不,站点地图对授权没有影响。在站点地图中,您可以通过添加角色为菜单添加安全修整。

您可以通过在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