34 votes

Authentification par formulaire ignorant le document par défaut

J'ai passé un jour et demi à essayer de résoudre ce problème. Bascially ont un ASP.net site web avec des Formulaires d'Authentification sur IIS7 à l'aide de Framework 4.0.

L'Autorisation genre de choses semble parfaitement fonctionner pour tous les scénarios, à l'exception de la frappant avec pas de document spécifique (Doit se résoudre à Défaut Doc).

Par exemple (Merci de ne pas être sévère sur son site encore être développé ;) ), http://www.rewardroster.com/Default.aspx fonctionne parfaitement, cette page devrait permettre anon accès spécifié dans le web.config.

mais si j'ai frappé www.rewardroster.com Directement, il redirige vers la page de connexion avec l'URL de Retour ensemble à "/" ou "Login".aspx?ReturnUrl=%2f

Certaines choses que j'ai essayé:

1) Définissez l'Authentification à Aucun et puis le document par Défaut travaillé si ce n'est pas la question.

2) Ajouté DefaultDocument attribut Web.config

3) Supprimé toutes les entrées dans le Document par Défaut de la liste dans IIS, sauf en cas de Défaut.aspx

4) Ajouté MachineKey entrée dans la Config

5) Bascule de Intégré à des Classiques du pipeline dans IIS

Voici ce qui est dans ma config:

  <authentication mode="Forms">
    <forms name="appNameAuth" loginUrl="Login.aspx" protection="All" timeout="60" slidingExpiration="true" defaultUrl="Default.aspx" path="/">
    </forms>
  </authentication>
  </authentication>

 <location path="Default.aspx">

Merci beaucoup pour votre temps et j'espère que quelqu'un sait ce qui se passe ici.

39voto

Dmitry.Alk Points 366

C'était ma solution:

Dans Global.asax , méthode: Application_BeginRequest , placez ce qui suit:

 if (Request.AppRelativeCurrentExecutionFilePath == "~/")  
   HttpContext.Current.RewritePath("HomePage.aspx");
 

Agréable et simple, et vous avez la possibilité de construire une logique autour de la page d'accueil que vous souhaitez utiliser si votre site Web utilise plusieurs pages d'accueil basées sur des variables de configuration.

Dmitry.Alk

8voto

Gregory Ostermayr Points 245

J'ai été voir ce même problème lors de la tentative de frapper le chemin de la racine et j'ai essayé tout ce qui a été mentionné précédemment. Il semble Asp.net 4.0 ajoute deux ExtensionlessUrl modules de applicationhost.config pour IIS 7. Vous pouvez supprimer ces modules en ajoutant ce qui suit à votre site web.config

<system.webServer>
  <handlers>
    <remove name="ExtensionlessUrl-Integrated-4.0"/>
    <remove name=" ExtensionlessUrl-ISAPI-4.0_32bit "/>
  </handlers>
</system.webServer>

Des Informations Supplémentaires

Microsoft KB

Comment extensionless url sont traitées par asp net v4

4voto

Kasey Speakman Points 842

Ce que j'ai fait pour régler ce problème est de l'écriture de quelques lignes de code dans ma page de connexion à vérifier pour une Demande.QueryString["ReturnUrl"] de "/". Si elle a constaté que, ensuite, il redirigé par défaut.aspx.

Je ne pouvais pas trouver un moyen de le rendre authentification de formulaires de ne pas intercepter les appels sans page spécifiée (par ex. www.mysite.com). :( J'ai même essayé .NET 4 le Routage d'URL et qui n'empêcha pas l'Authentification par Formulaires de détournement de la demande.

Ci-dessous le code que j'ai utilisé dans la connexion.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    if (!(IsPostBack || IsAsync))
    {
        string returnUrl = Request.QueryString["ReturnUrl"];
        if (returnUrl != null)
            if (returnUrl == "/")
                Response.Redirect("default.aspx");
    }
}

4voto

Johan van Dijke Points 21

J'ai eu un problème similaire. Aucun style quand je n'étais pas connecté, www.site.nl\ redirigé vers la page d'identification (avec une url de redirection vers une page d'accueil) et l'entrée de www.site.nl\Home (même page d'accueil que l'url de redirection mentionné avant) n'a pas besoin d'un login.

La Solution était:

  • Ouvrir IIS
  • Ouvrir IIS: Authentification
  • D'ouvrir et de modifier l'accès Anonyme
  • Vérifier (j'ai changé l'utilisateur de l'application.utilisateur de la piscine)
  • Donner à l'utilisateur des droits sur la racine du site (sur le système de fichiers)

Ça a fonctionné pour moi.

Bonne chance

3voto

Brad Points 11

Johan solution a fonctionné pour moi, mais seulement si la demande a été pour la racine du site.

Mon site est organisé comme ceci:

  • www.[monsite].com/login.aspx
  • www.[monsite].com/default.aspx
  • www.[monsite].com/[somestuff]/par défaut.aspx
  • www.[monsite].com/[morestuff]/par défaut.aspx

Après Johan de bons conseils, des demandes de www.[monsite].com me suis dirigé vers les formulaires de la page de connexion, et après la connexion, la page par défaut. Cependant, si quelqu'un a demandé "/[somestuff]/", il n'aurait toujours pas de travail.

Je l'ai eu à travailler par activation de l'authentification anonyme sur le [somestuff] et [morestuff] répertoires, puis de le désactiver sur l'individu fichiers dans ces répertoires. Ce n'est pas une configuration de la sécurité, je veux les aider, étant donné les gens pourraient obtenir soit l'endroit où ils vont partir par défaut.aspx ou juste de demander [somestuff]/par défaut.aspx pour commencer. Mais maintenant je sais pourquoi c'est un échec. Il semble que vous avez besoin de l'accès anonyme sur les annuaires sur lesquels vous souhaitez utiliser par défaut des documents.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X