2009-07-10 6 views
0

Ich habe zwei Seiten, NonMember.aspx und Member.aspx. Wenn ein Benutzer auf die Website kommt, wird er bei der Anmeldung zu NonMember.aspx weitergeleitet. Ich möchte, dass er sofort zu Member.aspx weitergeleitet wird, aber stattdessen verbleibt er auf NonMember.aspx. Der Benutzer muss tatsächlich erneut auf den Menüeintrag klicken, um zu Member.aspx zu gelangen.Wie wird von einer Nichtmitgliedsseite auf eine Mitgliedsseite weitergeleitet, wenn sich ein Benutzer anmeldet?

Die Links befinden sich unter http://abc.com/tools/NonMember.aspx und http://abc.com/tools/Member.aspx.

ich tat:

System.IO.Path.GetFileNameWithoutExtension(Request.Url.ToString()); 

aber ich es denke eine bessere Möglichkeit ist, vor allem, da ich mehrere default.aspx Seiten haben und dies ein Problem

hier ausführlicher darstellen könnte, ist auf das, was genau tue ich:

Wenn ich die Seite auf meinem lokalen Entwicklungsmaschine, die nicht der Kirche angehören Seite Punkte auszuführen:

http://testserver/tools/NonMember.aspx.

Requet.Url.AbsolutePath verweist auf /testserver/tools/NonMember.aspx.

Dann habe ich dies tue:

if(url == "~/tools/NonMember.aspx") 
{ 
    Response.Redirect("~/tools/Member.aspx"); 
} 

Die oben nicht funktioniert und ich kann überprüfen, ob url gleich /testserver/tools/NonMember.aspx ist, weil, wenn ich Liveserver einsetzen, wird es scheitern.

+1

ASP.Net Formularauthentifizierung diese Fähigkeit eingebaut hat, aber ich denke, Sie verwenden nicht Das. – Greg

Antwort

1

Wenn Sie die Formularauthentifizierung für eine ASP.NET-Anwendung verwenden, werden Sie automatisch zu der Seite weitergeleitet, die Sie vor der Anmeldung angezeigt haben. Aus diesem Grund werden Sie zurück zur Seite NonMember.aspx weitergeleitet.

Es wäre besser, wenn Sie nur eine Mitgliedsseite hätten und eine Überprüfung auf der Seite durchführen würden, um festzustellen, ob der Benutzer authentifiziert ist. Wenn dies der Fall ist, zeigen Sie den Mitgliederinhalt an, ansonsten den Nichtmitgliedsinhalt anzeigen.

Wenn sich der Benutzer dann anmeldet und zur Seite zurückgeleitet wird, wird der Inhalt des Mitglieds angezeigt.


Wenn Sie halten die zwei separaten Seiten hartnäckig sind, dann in Ihrem Check müssen Sie einfach sehen, ob der aktuelle Benutzer (über die IsAuthenticated Eigenschaft auf dem Benutzer, die über die Seite ausgesetzt ist) authentifiziert und dann Redirect zu Ihrer Mitgliederseite. Wenn Sie sich auf der NonMember-Seite befinden, müssen Sie nicht überprüfen, um welche URL es sich handelt (es sei denn, dies ist MVC, die Sie nicht angegeben haben).

+0

Ich habe meine Frage aktualisiert. – Xaisoft

+0

Nicht MVC. Sind der Testserver und der Livserver Teil sinnvoll? – Xaisoft

+0

@Xaisoft: Ich sehe nicht, wie es wichtig ist, da Sie die URL bei meiner Antwort nicht überprüfen müssen. – casperOne

0

Wenn Sie das Httpresponse-Objekt haben, können Sie HttpResponse.Redirect

+0

Ich habe die Umleitung von dem aktualisierten Beispiel oben funktioniert, aber es muss einen besseren Weg geben, da ich mehrere Seiten als Standard haben kann. – Xaisoft

0

Sie sollten Ihre Cookie oder Session-Variablen überprüfen, um zu sehen, ob der Benutzer angemeldet ist und dann eine Response.Redirect verwenden, um sie auf das Element zu bewegen Seite.

+0

Ich habe den Authentifizierungsteil unten, es ist der beste Weg, die URL der aktuellen Seite zu erhalten, auf der sich der Benutzer befindet. – Xaisoft

+0

Vielleicht sollten Sie versuchen, System.Web.HttpContext.Current.Request.Url.AbsolutePath – Totty

+0

Ich aktualisierte meine Frage mit dem, was Sie vorgeschlagen. – Xaisoft

0

Ich bin mir nicht sicher, ob ich dein Szenario bekomme, aber lass es uns versuchen.

Wenn Sie öffentliche Seiten haben, die Anmeldeseite und private Seiten (Mitgliedsseiten) und wenn Sie Ihre Benutzer authentifizieren, wollen Sie nur den privaten Teil Ihrer Website durchsuchen, sollten Sie früh in den Verarbeitungsschritten überprüfen (AuthorizeRequest würde sei eine gute phase) wenn die anfrage einkommen ist für eine öffentlichkeit oder für die login-seite, die du auch für öffentlich hältst und von dort auf deine private seite umleite (wie ... mit einer "home" page für den member-bereich der seite und immer dorthin weiterleiten, sobald Sie eine authentifizierte und ordnungsgemäß autorisierte Anfrage an eine öffentliche URL Ihrer Site erhalten haben).

EDIT: Sie sollten für Request.FilePath überprüfen

+0

FilePath gibt /testserver/tools/NonMember.aspx zurück, das nach der Bereitstellung an /liveserver/tools/NonMember.aspx beschädigt wird. – Xaisoft

+0

Also das ist ein Ordner ... dann definiere eine globale Zeichenfolge und weise testserver in Debug und Liveserver in release zu. – user134706

0

ich das gerade am Ende dabei folgende:

if(Authenticated) 
{ 
    string path = Request.UrlReferrer.AbsolutePath; 

    if (path.EndsWith("/tools/NonMember.aspx")) 
    { 
     Response.Redirect("~/tools/Member.aspx"); 
    } 
} 
Verwandte Themen