2009-10-09 8 views
2

J'ai un projet Asp.Net MVC avec l'authentification par formulaire typique qui redirige l'utilisateur vers une page après une connexion réussie. S'il y a un ReturnUrl dans la chaîne de requête, il redirigera l'utilisateur vers ReturnUrl.Connexion avec un ReturnUrl pointant vers une action POST: FAIL!

Le problème survient lorsqu'un utilisateur connecté se trouve sur une page suffisamment longue pour que son identifiant de connexion expire, puis soumet le formulaire provoquant une publication sur le serveur. Comme l'utilisateur n'est plus authentifié, l'utilisateur se verra obligé de se reconnecter. Toutefois, ReturnUrl pointe vers une action qui n'accepte que la méthode POST et lève une exception après avoir été redirigée.

Y a-t-il un travail pour cela?

Répondre

1

Vous devez créer une action GET identique et la rediriger vers le formulaire qu'ils remplissaient. Le problème est que la redirection vers ReturnUrl fait un GET, pas un POST, d'où l'erreur.

Exemple:

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult SomeFormAction() 
{ 
    //redirect them back to the original form GET here 
    RedirectToAction(stuffhere); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult SomeFormAction(FormCollection collection) 
{ 
    //this is your original POST 
} 
Questions connexes