2017-03-15 8 views
1

Ich verstehe, dass zum Ändern der URL [Autorisieren] führt Sie zu. Sie haben diese Zeile in der web.configSo ändern Sie Redirect bei Verwendung von [Autorisieren]

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 

bearbeiten Was passiert, wenn ich zwei Zeichen in den Seiten und ich möchte die Menschen von einem Controller umleiten von einem anderen Controller mit url/f/signin und Menschen/s/anmelden?

+0

Auf Kosten eines zusätzlichen Umleitung haben würde, ist die einfachste Art und Weise kann ich denke, diese zu lösen wäre es, das "loginUrl" durch eine Aktion zu ersetzen, die entscheidet, in welcher Kategorie sich der Benutzer befindet, und diese dann zur entsprechenden Anmeldeaktion weiterleitet. – spender

+0

Sie müssen "returnUrl" als Zeichenfolgenparameter für Ihre Umleitungsaktion verwenden (d. H. Die Aktion, auf die "loginUrl" verweist). Die anfängliche Authentifizierungsumleitung liefert diesen Wert in der Abfragezeichenfolge. Sie können es zurückentwickeln, um festzustellen, woher der Benutzer kam. – spender

+0

Wie übergebe ich einen String-Parameter an die web.config? – Newbie

Antwort

1

Sie könnten loginUrl auf eine Aktion verweisen, die den Benutzer entsprechend umleitet.

Es ist etwas würde wie folgt aussehen:

public class MySpecialLoginController:Controller 
{ 
    public ActionResult Index(string returnUrl) 
    { 
     if(returnUrl.EndsWith("/foo")) //dirty. you could do better... 
     { 
      return RedirectToAction("signin","f"); 
     } 
     //etc 
    } 
} 

und Standard-Routing unter der Annahme, loginUrl den Wert "~/MySpecialLogin"

+0

wenn die aspnet-auth entscheidet, dass der Benutzer keinen Zugriff auf eine Seite hat (sagen wir es 'foo/bar'), gibt es eine Umleitung zum' loginUrl' mit einem Query-String wie '? ReturnUrl = foo% 2fbar', so dass Sie nach dem Login an den Ort zurückkehren können, von dem Sie gekommen sind. Kurz gesagt, es wird automatisch ausgefüllt. – spender

+0

hmm scheint wie es sollte funktionieren, aber es ist nicht? Ich habe eine Aktion im f-Controller namens Redirector (String ReturnUrl) gemacht, ich habe dort einen Breakpoint gesetzt, aber es tritt nicht ein, obwohl diese URL angezeigt wird/f/Redirector? ReturnUrl =% 2fF% 2fprofileperson% 3fid% 3d21 & id = 21 – Newbie

+0

hat nichts dagegen getan, weil ich httppost verwendet habe. Funktioniert super! Danke – Newbie

Verwandte Themen