Comment remplacer / modifier FormsAuthentication LoginUrl dans certains cas
Est-il un moyen de modifier dynamiquement le LoginUrl de FormsAuthentication? Ce que j'ai est l'ensemble du site protégés par FormsAuth, mais pour certaines pages dans un sous dossier, je tiens à le prendre à l'utilisateur de différentes page de connexion, et ont FormsAuth poignée de la ReturnUrl choses. Est-ce possible ou dois-je écrire mon propre code de redirection pour le sous-dossier?
Voici un exemple de mise en page:
~/LogOn1.aspx
~/Protected1.aspx
~/Protected2.aspx
~/Subfolder/
~/Subfolder/LogOn2.aspx
~/Subfolder/NotProtected.aspx
~/Subfolder/Protected3.aspx
Donc mon web.config ressemble:
<forms loginUrl="~/Splash.aspx" ... />
Toutes les Protégés*.pages aspx ont
<deny users="?">
Ce que je voudrais, toutefois, est de ~/sous-dossier/Protected3.aspx pour être redirigé vers ~/sous-dossier/LogOn2.aspx si l'utilisateur est anonyme.
J'ai essayer de mettre une version allégée du web.config ~/sous-dossier/web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Subfolder/LogOn.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="~/Subfolder/default.aspx" requireSSL="true" cookieless="UseCookies" enableCrossAppRedirects="false" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
Mais tout ce qui est moi est cette erreur:
C'est une erreur d'utiliser une section
enregistré comme
allowDefinition='MachineToApplication'
au-delà du niveau d'application. Cette erreur
peut être causée par un répertoire virtuel
ne pas être configuré comme une application
dans IIS.
Je pense faire le sous-dossier dir, une application causer encore plus de problèmes à ce point, mais peut-être que je me trompe. Si c'était une demande, ne serait-ce pas séparé de tout le code dans ~/sous-dossier du reste de l'application parente?
source d'informationauteur slolife
Vous devez vous connecter pour publier un commentaire.
Le problème que vous rencontrez est que le Les formes de l'élément est uniquement autorisé au niveau de l'application - vous ne pouvez pas le définir dans un sous-site web.config.
Malheureusement vous aussi vous ne pouvez pas le définir à l'aide d'un L'emplacement de l'élémentet la FormsAuthentication.LoginUrl propriété est en lecture seule.
De chasse autour d'un peu, il ressemble à votre meilleur pari serait d'avoir un peu de code sur votre page de connexion qui détecte lorsque l'utilisateur est arrivé d' (c'est à dire en vérifiant la valeur de la "ReturnUrl" chaîne de requête) et de la rediriger vers votre autre page de connexion s'ils sont de la sous-répertoire. Cependant, je dois admettre que ce n'est pas bien du tout, si vous voulez personnalisé pages d'ouverture de session pour plusieurs sous-répertoires. 🙁
Dans repsonse à votre travail d'édition - oui, rendant le sous-dossier, une application "résoudre" cette erreur, mais comme vous le soulignez, vous pouvez avoir plus de problèmes, comme vous devez déplacer tous les fichiers binaires, app_code, qu'avez-vous dans ce sous-dossier, il n'est donc pas vraiment une solution.
J'ai eu ce problème aussi bien et viens de googlé ici pour essayer de le résoudre alors souvenu avait fait il y a longtemps et ce que j'ai fait était à l'ouverture de session par défaut.page aspx dans le dossier racine dans l'événement Page_Load j'ai fait une redirection basée sur l'url de retour à mon sous-répertoire de gérer et de sa connexion.page aspx! Vous devez répéter le tbi pertinent pour chaque sous-répertoire.
Chaque sous-dossier vous permet d'avoir un webconfig de fichier. Donc, vous pourriez le mettre sur un site web.config dans votre sous-dossier avec le tags: