2017-03-15 36 views
1

Je comprends que pour modifier l'URL [Authorize] vous emmène à. Vous devez modifier cette ligne dans le web.configComment modifier la redirection lors de l'utilisation de [Autoriser]

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

Et si j'ai deux signes dans les pages et je veux rediriger les internautes d'un contrôleur à url/f/signin et les gens d'un autre contrôleur/s/se connecter?

+0

Au prix d'une redirection supplémentaire, je peux penser à la meilleure façon de résoudre ce serait de remplacer le 'loginUrl' par une action qui décide de la catégorie dans laquelle se trouve l'utilisateur, puis les redirige vers l'action de connexion appropriée. – spender

+0

Vous devez avoir 'returnUrl' en tant que paramètre de chaîne pour votre action de redirection (c'est-à-dire l'action pointée par' loginUrl'). La redirection d'authentification initiale fournira cette valeur dans la chaîne de requête. Vous pouvez effectuer une ingénierie inverse pour découvrir d'où vient l'utilisateur. – spender

+0

Comment transmettre un paramètre de chaîne au fichier web.config? – Newbie

Répondre

1

Vous pouvez pointer loginUrl vers une action qui redirige l'utilisateur de manière appropriée.

Il ressemblerait à quelque chose comme ceci:

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

et, en supposant le routage par défaut, loginUrl aurait la valeur "~/MySpecialLogin"

+0

lorsque l'authentification aspnet décide que l'utilisateur n'a pas accès à une page (disons c'est 'foo/bar'), il envoie une redirection vers' loginUrl' avec une chaîne de requête quelque chose comme '? ReturnUrl = foo% 2fbar', de sorte qu'après vous être connecté, vous pouvez retourner à l'endroit d'où vous venez. En bref, il est automatiquement rempli. – spender

+0

hmm semble que ça devrait marcher mais ça ne l'est pas? J'ai fait une action dans le contrôleur f appelé Redirector (string ReturnUrl), j'ai mis un point de rupture dedans mais il n'y a pas d'entrée même si cette URL apparaît/f/Redirector? ReturnUrl =% 2fF% 2fprofileperson% 3fid% 3d21 & id = 21 – Newbie

+0

ne me dérange pas n'a pas fonctionné parce que j'utilisais httppost. Fonctionne très bien! THX – Newbie