Warum funktionieren meine benutzerdefinierte Mitgliedschaft und Rollenanbieter vor Ort, scheitern aber nach der Bereitstellung?

StackOverflow https://stackoverflow.com/questions/9301572

Frage

Ich habe eine benutzerdefinierte Mitgliedschaft und einen Rollenanbieter erstellt, um die Authentifizierung und Autorisierung in ASP.NET MVC 4 zu nutzen.

Das Starten der Anwendung im Debug -Modus aus Visual Studio funktioniert vollkommen in Ordnung. Ich verwende dann jedoch die One -Click -Bereitstellung von Visual Studio, um meine Anwendung in eine Instanz von IIS zu laden, die auf meinem Entwicklungsgerät ausgeführt werden. Ich kann die Anwendung in meinem Browser laden, aber die Authentifizierung funktioniert nicht mehr. Mit Fiddler sehe ich, dass ein Cookie zurückgesandt wird, aber ich kann nicht auf Teile der Site zugreifen, die mithilfe von [autorize] Attributen eingeschränkt werden.

Unten finden Sie ein relevantes Ausschnitt aus meinem Web.config.

<membership defaultProvider="PonosMembershipProvider">
  <providers>
    <clear />
    <add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
  </providers>
</roleManager>

Darüber hinaus habe ich den Anwendungsnamen in beiden benutzerdefinierten Anbietern wie folgt mit Logik festgelegt:

public override string ApplicationName
    {
        get
        {
            return "Ponos";
        }
        set
        {
            throw new NotImplementedException();
        }
    }

Nachdem ich mich an die laufende Instanz von IIS angeschlossen habe, sehe ich außerdem, dass die in das Formular eingegebenen Informationen die Validierung bestehen, aber dass keine Zugriff auf Seiten gewährt wird, die den autorisierten Zugriff eingeschränkt haben.

Außerdem ist die Datenbank über die Bereitstellung mit denselben Werten wie die Entwicklungsdatenbank ausgestattet.

Warum arbeiten die Anbieter nicht nach dem Einsatz, wenn sie in der Debugging -Umgebung gut funktionieren?

War es hilfreich?

Lösung 2

Dieses Problem wurde erst angezeigt, als auf mein bereitgestellter Server direkt von der IP zugegriffen wurde. Als ich eine Hosts -Eintragszuordnung einer Domäne an die IP hinzufügte und anschließend die gleiche Domäne in meinem Auth Cookie festgelegt habe, wurde das Problem behoben.

Ich bin mir nicht sicher, warum ich nicht auf den Cookie zugreifen konnte, wenn die Domain eine IP -Adresse war, aber das hat das Problem behoben.

Andere Tipps

"Ich sehe, dass die in das Formular eingegebenen Informationen die Validierung übertragen, aber dass Seiten auf Seiten, die den autorisierten Zugriff eingeschränkt haben, kein Zugang gewährt wird."

Scheint wie ein Befragungsproblem!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top