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

Posted

技术标签:

【中文标题】是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?【英文标题】:Is it Possible to have ASP.NET role based form authentication and authorization without web.sitemap? 【发布时间】:2017-12-23 03:00:49 【问题描述】:

我制作了一个 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>

根据我在 Internet 上的发现,它用于填充 &lt;asp:Menu&gt; 控制项。虽然,我没有使用任何&lt;asp:Menu&gt; 控件。

我的第一个问题是,web.sitemap 对授权有影响吗?随着&lt;provider&gt; 部分的一些更改,我可以不使用web.sitemap 文件吗?

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

【问题讨论】:

【参考方案1】:

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

您可以通过在 web.config 文件中包含 &lt;authorization&gt; 元素来限制对您的网站(或部分网站)的访问。一个很好的概述提供了这个link。以下 sn-p 仅授予管理员对该文件夹的访问权限:

  <authorization>    
       <allow roles="Administrators" />    
       <deny users="*"/>    
  </authorization>    

因此,为了保护您的网站,请使用&lt;authorization&gt; 元素。如果您不需要站点地图,可以通过从 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。

【讨论】:

以上是关于是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?的主要内容,如果未能解决你的问题,请参考以下文章

导航控件

Android 左进 右出右进左出下进下出 动画

为啥ubuntu长时间无动作黑屏后无法唤醒

Django --- ajax结合sweetalert使用,分页器

开机No Boot Device Found.

linux下进mysql报ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock