Domino 9 und frühere Versionen > ND6: Entwicklung

@SetHTTPHeader für redirect nutzbar ?

(1/2) > >>

Jenson:
Hallo zusammen,

Ich habe hier zwei Webseiten. Die eine beinhaltet ein Form in dem der Benutzer seine Logindaten eingibt um sich zu authentifizieren, die zweite Seite zeigt dann Daten an, die nur für Authentifizierte Benutzer verfügbar sind.

Wenn nun die Session abgelaufen ist, dann bringt mir die zweite Seite ziemlich viel "Schrott"-Ausgaben, da die Authentifizierung, und somit eine wichtige Information für die Auswahl der richtigen Datensätze fehlt.

Ich möchte nun in der zweiten Seite per @Formel prüfen, ob der Benutzer noch authentifiziert ist, und wenn nicht will ich Ihn auf die erste Seite leiten, möglichst per Redirect.

Ich habe die Funktion @SetHTTPHeader( AntwortHeader ; Wert ) in der Doku gefunden, doch wie mir nach durchlesen der Dokumentation scheint, kann ich hier nur ZUSÄTZE zum Standard-Header 200 hinzufügen.

Ich müsste aber den Header "302, Object Moved" an den Browser senden, damit der zu einer anderen URL springt, oder?

Gibts da irgendwie eine möglichkeit in @Formel ?

Danke  ::)

Jenson

datenbanken24:
Da Deine Inhalt-Seite auch bei Ausgeloggtsein des Users trotzdem erscheint und dann "Schrott" bringt,
nehme ich an, dass Du "Anonymous" als Leser zugelassen hast in Deiner Datenbank,
sonst würde nämlich an dieser Stelle der Login Dialog von alleine kommen.

Ein Ansatz wäre dann,
in Deiner Maske einfach in einem "computed for display" Feld abzufragen,
ob der current user "Anonymous" ist.

@Username = "Anonymous"

so wie das alle nicht eingeloggten User im Web sind.


Darauf hin kannst Du das weitere Verhalten Deiner Maske steuern.

Gleichzeitig kannst Du diesen Wert

Feldberechnung des Feldes "IsAnonymous_" =

@If(
  @Username = "Anonymous";
  "1";
  "0"
);


über den
HTML Head Content

beim Rendern als Javascript Variable in Dein HTML setzen:

"<script language=JavaScript>" + @NewLine +

  "var IsAnonymous = " \"" + IsAnonymous_ + "\"" + @NewLine +

"</script>" + @NewLine


Mit dieser JS-Variable kannst Du in Javascript
z.B. ein
onLoad Event aufrufen, welches bei
IsAnonymous == "1"

einen
top.loacation.href =...
oder
top.location.replace(..

ausführt und somit automatisch die LoginSeite lädt, wenn der User nicht eingeloggt ist.

Gruß,
Uwe

Jenson:
Hallo Datenbanken24

Die Idee mit dem JavaScript hatte ich auch schon, allerdings wird dann die gesamte Seite erst aufgebaut und an den Client geschickt. Also die Darstellung mit dem "Schrott". Das dauert dann bei der Seite auch immer ein wenig, da die Seite viele viele Tabellen und Grafiken drin hat.

Also bekommt der User die Seite dann erst angezeigt und dann erfolgt der Redirect über das JavaScript. Es muss doch irgendeine Möglichkeit geben dynamisch auf eine andere Seite direkt vom Server aus umzuleiten.

Jenson

PS: Anonymous muss Zugriff auf die Datenbank haben, damit er die Login-Maske und alle anderen Seiten sehen kann die keine Authentifizierung erfordern.

Jenson

datenbanken24:
Jou - das stimmt wohl.

Wie man das Rendern einer Notes-Maske nach einem bestimmten Feld (IsAnonymous_) abbrechen kann - und sofort auf eine andere Seite verlinkt - ohne, dass die Seite bis zu Ende aufgebaut wird... puhh ... kann so was überhapt logisch gehen...

Alternativ:
Vielleicht kannst Du den komplizierteren Inhalt Deiner Maske in eine computed  Subform auslagern und diese Subform nur laden, wenn der User nicht Anonymous ist -
und wenn docj, dann alternativ eine MiniSubform, die nur den Javascript PassThru HTML hat, der umleitet.

Alternativ2

PS: Der Login-Dialog (falls Du keinen selbst gebauten meinst) kommt auch, wenn Anonymous kein Leserecht hat - alles andere wäre ja nicht so schön...

Aber - Du kannst in dr MASKE in der Maskeneigenschaft selbst sagen, WER mit dieser Maske neue Dokument erstellen darf.
Wenn da kein Anonymous drin steht -
kommt auch automatisch der Login-Dialog - auch wenn der Anonymous auf andere Teile Deiner Datenbank Zugriff hat.

Aber irgendwie habe ich gerade das gefühl, Du meinst gar nicht den Standard Login Dialog - sondern mehr eine selbstgebaute Webseite in der Form "bitte geben Sie hier Ihren namen ein", stimmts...?


Uwe

datenbanken24:
Hat mich nun doch auch selbst interessiert und habs mehrfach ausprobiert...

Ob man den Header mit

@SetHTTPHeader setzt oder im
HTML Head Content über

@If(
 @UserName = "Anonymous";
 @Return("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=weiterleitungs-url\">";
 ""
);

nimmt sich nix.

Es wir hier immer erst die Seite aufgebaut und danach weitergeleitet.

Die Teilmasken bleiben wohl die sauberste Lösung.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln