2017-07-18 2 views
0

J'ai créé une application web ASP.NET 4.5.2. Récemment, j'ai implémenté l'authentification et l'autorisation de formulaire basé sur le rôle en suivant l'article this.Est-il possible d'avoir une authentification de formulaire basée sur un rôle ASP.NET et une autorisation sans web.sitemap?

Dans cet article, l'auteur a utilisé un fichier web.sitemap. Voici le fichier web.sitemap j'ai fait en suivant l'article:

<?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> 

Et cela fait partie de mon fichier 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> 

D'après ce que j'ai trouvé sur internet que est utilisé pour remplir les éléments de contrôle <asp:Menu>. Bien que, je n'utilise aucun contrôle <asp:Menu>.

Ma première question est, est-ce que web.sitemap a une influence sur l'autorisation? Avec quelques modifications dans la section <provider>, je ne peux pas utiliser le fichier web.sitemap?

Ma deuxième question est, qu'est-ce que ~/javascript:; faire dans le troisième parent SiteMapNode.

Répondre

1

Non, le sitemap n'a aucun effet sur l'autorisation. Dans un sitemap, vous pouvez ajouter une fonction de sécurité à votre menu en ajoutant les rôles.

Vous pouvez restreindre l'accès à votre site Web (ou à des parties de celui-ci) en incluant l'élément <authorization> dans un fichier web.config. Un bon aperçu fournit cette link. Les subventions dans le code suivant que seuls les administrateurs d'accéder au dossier:

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

Ainsi, afin de protéger votre site, utilisez l'élément <authorization>. Si vous ne avez pas besoin du plan du site, vous pouvez le supprimer en supprimant cette section de votre web.config:

<siteMap enabled ="true" defaultProvider="SiteMap"> 
    <providers> 
     <add name="SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true" /> 
    </providers> 
    </siteMap> 

En outre, vous pouvez également supprimer vos fichiers sitemap. Pour plus de détails sur les sitemaps dans ASP.NET, voir le link.