Autor Thema: @SetHTTPHeader für redirect nutzbar ?  (Gelesen 3478 mal)

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
@SetHTTPHeader für redirect nutzbar ?
« am: 29.09.04 - 12:05:13 »
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

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #1 am: 29.09.04 - 15:42:24 »
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
« Letzte Änderung: 29.09.04 - 15:45:17 von datenbanken24 »

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #2 am: 29.09.04 - 16:36:20 »
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

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #3 am: 29.09.04 - 17:28:34 »
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
« Letzte Änderung: 29.09.04 - 17:39:01 von datenbanken24 »

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #4 am: 30.09.04 - 00:57:00 »
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.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #5 am: 30.09.04 - 08:51:19 »
Jenson, was ist, wenn Du die Formel in den "HTML Head Content event" packst? Dort koenntest Du ueber einen Meta-Tag ein Redirect ausloesen.
Zitat
The HTML Head Content event on a page or form lets you pass HTML information, such as a Meta tag, to the <Head> tag for a document.
Code
<meta http-equiv="refresh" content="0;url=https://www.atnotes/.de">

Oder Du baust Dir einen "WebQueryOpen Agent":
Zitat
To perform error checking, field validation, and other processing before Web users open or save documents, create a shared agent that runs manually. Then write a formula that uses @Command([RunAgent]) or @Command([ToolsRunMacro]) to run the agent and attach it to the WebQueryOpen or WebQuerySave form events. This simulates the LotusScript QueryOpen and QuerySave form events that aren’t supported on the Web.

A WebQueryOpen event runs the agent before Domino converts a document to HTML and sends it to the browser. Domino ignores any output produced by the agent in this context.
Examples for using this agent include performing large computations that aren’t possible with @commands or collecting statistics about who opened documents and when they did so.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #6 am: 30.09.04 - 10:31:48 »
@m3,

das ist das ja genau, was ein Topic darüber steht - allerdings wrd dann auch erst die komplette seite geladen und dann erst redirected...

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #7 am: 30.09.04 - 10:48:32 »
Ah, sorry. Ich bin heute nicht ganz da. :(

Ein ganz boeser Hack zu dem Thema:
http://www.datatribesoftwerks.com/members/datatribe/DatatribeBlog.nsf/archive/20031105-81C183?OpenDocument
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re: @SetHTTPHeader für redirect nutzbar ?
« Antwort #8 am: 30.09.04 - 14:58:42 »
Moin,

grundsätzlich wäre ich auch auf die Idee mit dem WebQueryOpen gekommen, doch befinde ich mich hier in einer Datenbank, die bereits alle Dinge wie Templates, Scripte, Inhalte etc verwaltet. Ich kann lediglich Formeln ausführen mit denen ich den Inhalt der Seite verändere.

Ich habe mir aber grade überlegt, dass ich ja grundsätzlich per Formel den Aufbau meiner Templates berechnen kann. Wenn also ein Benutzer nicht meher Authentifiziert ist, dann werde ich ihm einfach anstelle des content einen anderen Inhalt zeigen mit dem Hinweis, dass die Session abgelaufen ist.

Anders scheint es wirklich nicht zu gehen.


Jenson

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz