2014-09-15 10 views
7

Quando un utente è connesso e accede alla pagina di accesso. Se tenta di accedere nuovamente, ottieni Anti falso errore.Gestisci errori di contraffazione durante l'accesso mentre è già stato effettuato l'accesso? ASP.NET MVC

Il token anti-contraffazione non può essere decodificato. Se questa applicazione è ospitata da una Web farm o cluster, assicurarsi che tutte le macchine eseguano la stessa versione delle pagine Web ASP.NET e che la configurazione specifichi le chiavi di crittografia e convalida esplicite. AutoGenerate non può essere utilizzato in un cluster.

Un altro tipo di errore ottengo è:

Il token antifalsificazione previsto era destinato a un utente differenti rivendicazioni basata rispetto all'utente corrente.

Come gestire questi errori anti falso?

risposta

11

Crea un filtro di azione che eredita HandleErrorAttribute come nell'esempio seguente. Quindi puoi controllare la richiesta e gestire l'errore.

Questo è il mio esempio, ricorda che è necessario gestire le sezioni di reindirizzamento in base alla richiesta e ai requisiti.

Poi il login

[HttpPost] 
     [AllowAnonymous] 
     [AntiForgeryHandleError] 
     [ValidateAntiForgeryToken] 
     public async Task<ActionResult> Login(UserLoginViewModel model, string returnUrl) 
     { 
      //Your code... 
     } 

cura per un commento

Usa un altro controller/azione come AlreadySignIn()

Controller cod

public ActionResult AlreadySignIn() 
     { 
      return View(); 
     } 

Razor View

@using Microsoft.AspNet.Identity 
@{ 
    ViewBag.Title = "Switch Accounts"; 
    Layout = "~/Views/Shared/_LayoutLoginRegister.cshtml"; 
} 
<div class="col-md-12"> 
    <div class="block-flat text-center" style="padding: 20px; margin-bottom: 0; padding-bottom: 0;"> 

     <i class="glyphicon glyphicon-user"></i> 
     <br /> 
     <label style="padding-bottom: 10px; padding-top: 10px">You're already signed in as <strong>@User.Identity.Name</strong></label> 
     <label style="padding-bottom: 5px; padding-top: 5px">@Html.ActionLink("Remain signed in with this account.", "Login", "User", routeValues: null, htmlAttributes: new { id = "loginLink" })</label> 
     <label style="padding-bottom: 5px; padding-top: 2px">@Html.ActionLink("Click here to sign out and sign with a different account", "LogOff", "User", routeValues: null, htmlAttributes: new { id = "loginLink" })</label> 

    </div> 
</div> 

Spero che questo aiuti.

+0

ha risolto il mio errore. Ma durante l'accesso, questo metodo non accederà al nuovo utente. Mostrerà solo il vecchio utente che ha effettuato l'accesso. – Ruchan

+0

Controllare la sezione modificata della mia risposta. Se ritieni che questa sia la risposta, contrassegnala come risposta aiuterà gli altri a trovare una risposta a questo problema. – DSR

+0

Aww, significa che in realtà non accede al nuovo utente. Grazie, sei stato di grande aiuto. – Ruchan

Problemi correlati