Laden...

Komplettes Frameset "abmelden"

Erstellt von Sharpovski vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.818 Views
S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren
Komplettes Frameset "abmelden"

Hallo zusammen,

habe hier ein Frameset wobei sich in einem Frame ein "Abmelden" Button mit folgendem Code befindet.

Session.Abandon();
System.Web.Security.FormsAuthentication.SignOut();
Response.Redirect(Request.Url.AbsoluteUri);

Das Problem ist, dass nur der eine Frame auf die Startseite geleitet wird und nicht das komplette Frameset. Wie krieg ich das hin, dass die komplette Seite "abgemeldet" wird?

PS: Bitte nicht wieder die Diskussion anfangen keine Frames zu verwenden. Es ist jetzt nun mal so und ich kann nichts daran ändern.

W
799 Beiträge seit 2004
vor 18 Jahren

Mit nem serverseitigen Response.Redirect() überhaupt nicht. Generier ein JavaScript à la (Pseudocode):


<script>
function signout()
{
	top.location.href = "startseite.aspx";
}
</script>

Wenn der User JavaScript ausgeschalten hat, "hat er Pech gehabt" - d.h. für ihn tut sich nix solange er nicht versucht noch was aufzurufen, dann sollte die FormsAuthentication wieder greifen.

Anders ist es allerdings bei nem Frameset nicht zu lösen.

F
10.010 Beiträge seit 2004
vor 18 Jahren

Das ist mit einer der gründe warum Framesets bei ASP.NET nicht benutzt werden sollten.

Benutze lieber MasterPages.

W
799 Beiträge seit 2004
vor 18 Jahren

Original von FZelle
Das ist mit einer der gründe warum Framesets bei ASP.NET nicht benutzt werden sollten.

Benutze lieber MasterPages.

Na ja, es gibt genügend Gründe für und wider Frames, man sollte da nach Anwendungsfall unterscheiden und sie nicht pauschal ablehnen. Davon abgesehen ergibt sich kein wirklicher Nachteil in diesem Fall, denn der User ist so oder so ausgeloggt, im schlechtesten Fall fliegen ihm die Login-Aufforderungen dann halt in den einzelnen Frames um die Ohren, aber kritisch ist das nicht.

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

_Original von FZelle_Benutze lieber MasterPages.

Wie funktioniert das denn mit diesen MasterPages?

F
10.010 Beiträge seit 2004
vor 18 Jahren

Frames werden ja meist eingesetzt, um z.B. Menü's und solche sachen
auf jeder Page zu haben, damit man nicht alles Doppelt machen muss.

Dazu gibt es im FW 2.0 die Masterpages:
http://66.129.71.130/QuickStartv20/aspnet/doc/masterpages/default.aspx

Wenn Du FW 1.1 einsetzt, gibt es verschiedene Lib's die das implementieren.
Ich setze meist das hier ein:
http://www.codeproject.com/aspnet/sumitemplatecontrols.asp

Andere stehen eher auf die hier:
http://authors.aspalliance.com/PaulWilson/Articles/?id=14

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

Mir geht es eher darum, dass nicht alle Teile der Seite bei einer Eingabe neu geladen werden sollen. Hab zwar schon einiges mit Ajax.NET implementiert, aber alles läßt sich damit auch nicht realisieren. Und ich glaube das Problem mit dem Neuladen der ganzen Seite besteht bei MasterPages auch. Oder liege ich da falsch?

W
799 Beiträge seit 2004
vor 18 Jahren

Nein, liegst du nicht.

C
1.215 Beiträge seit 2004
vor 18 Jahren

Das ganze kann auch einfach per HTML gelöst werden...

Nimm anstelle des Buttons nen Link und trage bei dem als Target "_Top" ein.

Grüsse

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

Wenn jetzt die Session abläuft und der User in einen der Frames klickt, erscheint in dem entsprechendem Frame die Startseite, was ja auch richtig. Gibt es allerdings eine Möglichkeit, dass die Startseite auf das ganze Frameset anwendet wird?

C
1.215 Beiträge seit 2004
vor 18 Jahren

Mache folgenden Eintrag in die Startseite...



<body onload="top.location.href=this.location.href">

Funktioniert aber nur bei aktiviertem Javascript.

Grüsse

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

Also irgendwie erzeugt Dein Code eine Art Endlos-Schleife. Der Mauszeiger flackert und die Ladeanzeige des Browsers kommt nicht mehr zur Ruhe.

C
1.215 Beiträge seit 2004
vor 18 Jahren

Hast Du denn gar keine Phantasie, wie man das fixen könnte...
😉



<body onload="if(top.location.href!=this.location.href)top.location.href=this.location.href">

Grüsse

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

Jetzt habe ich gerade gesehen, dass der Opera eine Fehlermeldung ausgibt:

Error:
name: TypeError
message: Statement on line 1: Could not convert undefined or null to object
Backtrace:
  Line 1 of  script 
    if (top.location.href != this.location.href)
      At unknown location
    [statement source code not available]

Woran kann das liegen? Beim IE und FF scheint es zu funktionieren.

C
1.215 Beiträge seit 2004
vor 18 Jahren

Versuche mal folgendes...



<body onload="if(top!=this)top.location.href=this.location.href">
...oder...

<body onload="if(top.location!=this.location)top.location.href=this.location.href">

Grüsse

S
Sharpovski Themenstarter:in
259 Beiträge seit 2004
vor 18 Jahren

Haut irgendwie nicht hin. Verwendet Opera ein anderes Objekt-Modell? Wie könnte das sonst gehen?