3

Je fais un test de bac à sable rapide avec des URL réécrites (exemple tiré du blog de Scott Guthrie) et l'authentification par formulaires/autorisation.Utilisation de l'authentification/autorisation des formulaires avec des URL réécrites

J'ai une configuration très simple.

~/View/(\d{1,6})  =>  ~/Public/View.aspx?ContentID=$1 

ET

~/Buy/(\d{1,6})  =>  ~/Private/Purchase.aspx?ContentID=$1 

J'ai confirmé l'URL Rewriting travaille en naviguant à chacun des éléments suivants séparement

Ensuite je suis allé et a permis mon authentification par formulaire/Autorisation pour les 2 répertoires dans le web.config. Configuration comme suit

<location path="Private"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="Public"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Cela fonctionne parfaitement lorsque je passe en revue les 2 URL d'origine (les années .aspx) mais ne se déclenche pas du tout quand je passe en revue les versions d'URL réécrites.

J'ai essayé d'ajouter <location> sections pour Buy mais séparement parvient toujours pas à faire le module d'autorisation/authentification pour botter.

On peut supposer que c'est parce qu'il ne considère pas ces URL comme ASPX Ressources .. . Je peux contourner en faisant le regard des règles de rewriter pour

<LookFor>~/Buy/(\d{1,6})\.aspx</LookFor> 

-à-dire la force la version réécrite pour avoir un ASPX à la fin, mais cela semble juste laid. Y at-il un moyen de déclencher les gestionnaires d'authentification pour n'importe quel type d'URL, quelle que soit l'extension (ou l'absence)

+0

Scott Guthrie donne un aperçu 4 approches différentes, que l'on vous utilisez? http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx – MyItchyChin

Répondre

2

Pour utiliser l'authentification intégrée, vous devez décider si vous souhaitez vous authentifier en fonction de l'original URL "brutes" ou celles réécrites. Il semble que le réécriveur d'URL que vous utilisez soit connecté à un événement après que l'authentification a déjà été effectuée, ce qui explique pourquoi seules les règles de dossier «Public» et «Privé» sont suivies. Si vous souhaitez vous authentifier en fonction des URL réécrites, vous devez utiliser un réécriteur qui se connecte à un événement antérieur (tel que BeginRequest) et mettre à jour votre fichier web.config avec les URL réécrites. Alternativement, vous pouvez brancher votre propre fournisseur d'authentification et faire des choses comme vérifier les URL réécrites et originales, mais cela est probablement exagéré pour un site de test Sandbox.

S'il vous plaît voir cet article pour plus d'informations:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

J'espère que cela aide.

0

Dans ASP.NET 4.0 (et je crois que c'est dans 3.5 SP1), une nouvelle fonctionnalité de routage est incluse. Les avantages de cette fonctionnalité de routage sont qu'elle est désormais prise en charge directement dans ASP.NET, et vous pouvez donc spécifier que quand une route est exécutée, elle doit respecter les paramètres d'autorisation pour le fichier .ASPX réel.

Je vous recommande donc de vérifier si vous pouvez implémenter cette fonctionnalité de routage à la place.

0

essayez d'activer FormsAuthentication et l'autorisation de toutes les demandes. Par défaut, il n'est activé que pour les requêtes asp.net comme .aspx. peut être fait dans IIS (7) ou directement dans web.config serveur web/section modules

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
     <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition=""/> 
     <remove name="UrlAuthorization" /> 
     <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" /> 
    </modules> 
</system.webServer> 
Questions connexes