2014-04-10 22 views
6

Sto utilizzando l'identità di asp.net per l'accesso e l'autenticazione. sto errore ottenendo per il campo password quando login con i seguenti metodoL'input non è una stringa Base-64 valida poiché contiene un'identità ASP.NET a 64 caratteri non di base

modello = è un'entità utente

var user = await UserManager.FindAsync(model.UserName, model.Password); 
       if (user != null) 
       { 
        bool isPersistent = false; 
        await SignInAsync(user, isPersistent); 
        return RedirectToLocal(returnUrl); 
       } 

L'ingresso non è una base-64 stringa valida in quanto contiene un carattere non di base 64, più di due caratteri di riempimento o un carattere non valido tra i caratteri di riempimento

+0

Inoltre sto ricevendo questo problema. Non penso che tu stia usando MySQL? Sei riuscito ad arrivare alla fine di questo problema? – Luke

+0

Ho anche questo problema, sto usando EF. comunque ho fatto scavalcare il Pk da una stringa a un – Zapnologica

+2

Int. Avrai lo stesso errore se metti hash non valido in Password_Hash – user960567

risposta

0

Stai utilizzando EF? In tal caso, non aggiungere AspNetRoles, AspNetUserClaims, AspNetUserLogins e AspNetUserRoles su edmx.

Inoltre, utilizzo sempre il metodo "Login" come di seguito. Se ho bisogno di mantenere alcune informazioni (come userRole, userName etc), utilizzo Session come di seguito.

public async Task<ActionResult> Login(LoginViewModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     // This doesn't count login failures towards account lockout 
     // To enable password failures to trigger account lockout, change to shouldLockout: true 
     var user = await UserManager.FindAsync(model.Email, model.Password); 
     //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
     if (user != null) 
     { 
      string userRole = UserManager.GetRoles(user.Id).FirstOrDefault(); 
      Session["userRole"] = userRole; 
      Session["userName"] = model.Email; 
      await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      ModelState.AddModelError("", "Invalid username or password"); 
      return View(model); 
     } 
    } 

Quindi si può provare

await SignInManager.PasswordSignInAsync 

o

await SignInManager.SignInAsync 
Problemi correlati