2015-10-12 11 views
20

Nuovo all'autenticazione OWIN e difficoltà a creare i miei tipi di reclami owin.Aggiungi tipi di reclamo personalizzati

Ecco la cosa. Devo aggiungere attestazioni personalizzate come "GroupID" in modo da poter accedere facilmente alle diverse pagine.

ho fatto qualcosa di simile nella mia Entrata

public ActionResult Login(LoginViewModel model, string returnUrl) 
{ 
    UserViewModel userModel = new UserViewModel(); 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 

    if(CommonHelper.ValidateADUser(model.Username,model.Password)) 
    { 

     UserViewModel curUser = userModel.GetUserDetails(model.Username); 
     if (curUser != null) 
     { 
      var claims = new List<Claim>(); 
      claims.Add(new Claim(ClaimTypes.WindowsAccountName, curUser.Username)); 
      claims.Add(new Claim(ClaimTypes.Name,curUser.Fullname)); 
      claims.Add(new Claim(ClaimTypes.Role, "")); 
      claims.Add(new Claim("GroupID", curUser.UserGroupID.ToString())); 

      var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); 
      var ctx = Request.GetOwinContext(); 
      AuthenticationManager.SignIn(id); 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("", "Invalid login attempt."); 
    } 

    return View(model); 
} 

Nel mio login parziale ho cercato di ottenere il valore facendo questo

public ActionResult _LoginPartial() 
{ 
    var identity = (ClaimsIdentity)User.Identity; 
    TempData["curUserFullName"] = identity.FindFirst(ClaimTypes.Name).Value; 

    string s= identity.FindFirst("GroupID").Value; 
    return PartialView(); 
} 

posso ottenere il nome utente e il nome completo senza alcun problema ma l'id di gruppo causa un errore nullo dell'oggetto.

Sperando che qualcuno possa spingermi alla risposta corretta.

+0

sei in grado di vedere se la nuova richiesta viene aggiunta alla tabella DB UserClaims? – Jay

+0

Dove si trova la tabella derc? – TheProvost

+0

dipende dall'app, di solito qualcosa come ASPNetUserClaims nel DB dell'applicazione. – Jay

risposta

18

Come ho controllato il codice non ci sono problemi.

Ecco quello che voglio che tu faccia:

Verificare se la cache è stato chiaro. Se la cache non è stata cancellata è possibile chiaro come questo: CTRL + MAIUSC + CANC

E 'perché durante il tuo login, ti farà risparmiare nei cookie e non era chiaro, e succede che il nuovo il reclamo non è stato salvato nei cookie.

Oppure prova a verificare se il tuo UserGroupID ha un valore.

+0

Cosa !!!! Errore Rookie. Ho usato diversi browser, quindi ho pensato che i cookie non rappresentassero il problema. Grazie!!! – TheProvost

+2

Its perché otang monggos – Sherlock

+0

Questo hotkey è estremamente utile! – mezmi

Problemi correlati