2009-07-14 4 views
1

Unsere ASP.NET-Anwendungsseiten werden als Feature in einer MOSS 2007-Farm bereitgestellt.Zugriff verweigert Anmeldung als anderer Benutzer

Wenn sich ein Benutzer bei der Site anmeldet, wird der Benutzer auf eine Standardseite weitergeleitet.

In der oberen rechten Ecke gibt es eine Option "Als anderer Benutzer anmelden". Wenn der Benutzer diese Option auswählt und die Anmeldeinformationen eines anderen Benutzers eingibt, wird die Meldung "Zugriff verweigert" angezeigt.

Diese Nachricht ist nicht sinnvoll, da alle Benutzer Zugriff auf diese Standardseite haben. Wenn der Benutzer nun zur Adressleiste wechselt und die URL manuell zur Standardseite ändert, wird die Seite geladen. Ich kann im Quellenteil der URL "Zugriff verweigert" sehen, dass die codierte URL der Zielseite die erwartete Standardseiten-URL ist.

Zuvor habe ich eine Änderung an der Datei INIT.JS vorgenommen, um den Benutzer umzuleiten, wenn die Änderung der Anmeldung von einer Seite erfolgt, die nicht die Standardseite ist.

function LoginAsAnother(url, bUseSource) 
{ 
    document.cookie="loginAsDifferentAttemptCount=0"; 
    if (bUseSource=="1") 
    { 
     GoToPage(url); 
    } 
    else 
    { 
     var ch=url.indexOf("?") >=0 ? "&" : "?"; 
     //url+=ch+"Source="+escapeProperly(window.location.href); 
     url+=ch+"Source="+escapeProperly(getSspLocation(window.location.href)); 
     STSNavigate(url); 
    } 
} 

Die ursprüngliche Zeile ist auskommentiert.

Die Funktion getSspLocation ist nur eine Funktion, die ich schrieb, um die Standard-Seiten-URL von einer anderen URL zu erhalten.

function getSspLocation(url) { 
    var parts = url.split('/'); 
    var result = ""; 
    for (var i = 0; i < parts.length; ++i) { 
     result += parts[i] + "/"; 
     if (parts[i].toLowerCase() == "ssp") 
      return result + "default.aspx"; 
    } 
    return url; 
} 

Irgendwelche Ideen?

Antwort

1

Dies wird Ihre Frage nicht beantworten, aber ich würde Ihnen raten, die Datei init.js zu ändern. Es ist sowohl gegen gute Praxis als auch gegen Microsofts Empfehlung, dass Sie die Unterstützung von ihnen verlieren werden. Darüber hinaus wird es bei der Anwendung von Service Packs und/oder Hotfixes mit Sicherheit überschrieben.

Wenn Sie die Funktionalität von OOB-Skriptdateien anpassen müssen, verwenden Sie stattdessen eine benutzerdefinierte Musterseite, die Ihre benutzerdefinierten Skripts enthält.

+0

Nicht mit der Frage verwandt, aber wie würden Sie Ihr benutzerdefiniertes Skript z. die LoginAsAnother Funktion? –

+0

@Hans Sie können es überschreiben, indem Sie Ihrem benutzerdefinierten Skript eine Funktion mit demselben Namen hinzufügen. –

+0

Die Verwendung desselben Namens scheint das Problem der Fragilität bei Service Packs nicht zu lösen. –