2008-12-18 10 views
4

J'ai une action de traitement d'un message de formulaire, mais je veux m'assurer qu'ils sont authentifiés avant l'action. Le problème est que les données de publication sont perdues parce que l'utilisateur est redirigé vers la page de connexion, puis de retour.ASP.NET MVC Conserver les données de poste après l'autorisation

[AcceptVerbs(HttpVerbs.Post)] 
    [Authorize] 
    public ActionResult AskQuestion(string question) 
    { 
     .... 
    } 

Des idées?

Vive

Répondre

2

Vous devez sérialiser les valeurs de formulaire et un RedirectUrl dans un champ masqué. Après l'authentification, désérialiser les données dans votre champ masqué et rediriger en fonction de la valeur de l'URL RedirectUrl.

Vous aurez besoin d'une classe Authorize personnalisée pour gérer cela.

4

Un POST est généralement utilisé pour un ajout, mise à jour ou supprimer des données. Au moment où l'utilisateur fait cela, si l'authentification est nécessaire, vous devriez déjà les avoir authentifiés. Je vous suggère donc de changer le flux de votre application pour qu'elle s'authentifie avant le POST.

+0

Alors que je suis d'accord avec le principe de ce que vous dites, je ne suis pas d'accord que les données utilisateur doivent être éliminés. Il devrait être tenu, mais pas agi jusqu'à ce que l'utilisateur peut être authentifié. Sinon, cela crée une expérience utilisateur inutile lorsque des événements comme des délais d'attente de session se produisent. –

+0

Je ne suggère pas que les données devraient être rejetées. Je suggère que, avant de commencer à recueillir ces données, l'utilisateur soit authentifié. Par exemple, plutôt que de présenter le formulaire, présentez un lien vers le formulaire, et si l'utilisateur n'est pas encore authentifié, amenez-le d'abord sur l'écran de connexion. Il est préférable de les faire authentifier en premier, car l'utilisateur sera ennuyé si, après avoir rempli un formulaire, ils doivent ensuite chanter/s'authentifier avant de pouvoir soumettre. S'ils ne souhaitent pas s'enregistrer à ce moment-là, le site leur a fait perdre leur temps. – RedFilter

-2

Vous pouvez également utiliser la session pour enregistrer les informations ...

+0

Si l'utilisateur est déconnecté, généralement en raison d'un délai d'attente de session, il n'a, bien, pas de session ... – Siewers

Questions connexes