2016-08-17 1 views
0

Je tripote avec l'identité et je suis définitivement en difficulté - j'ai cherché et cherché, mais rien ne se voit.MVC6 revendications d'identité de base dans la vue rasoir

Je veux ajouter des revendications à l'identité, puis être en mesure de poster ces dans la vue sur ma page.

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     var authenticationType = "Basic"; 
     var userIdentity = new ClaimsIdentity(await manager.GetClaimsAsync(this), authenticationType); 

     // Add custom user claims here 
     userIdentity.AddClaim(new Claim("FirstName", this.FirstName)); 

     return userIdentity; 
    } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Address { get; set; } 

Dans mon registre utilisateur i enregistrer ces derniers avec l'utilisateur:

public async Task<IActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName}; 
      var result = await _userManager.CreateAsync(user, model.Password); 
      if (result.Succeeded) 
      { 
       // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 
       // Send an email with this link 
       //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); 
       //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); 
       //await _emailSender.SendEmailAsync(model.Email, "Confirm your account", 
       // "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
       await _signInManager.SignInAsync(user, isPersistent: false); 
       _logger.LogInformation(3, "User created a new account with password."); 
       return RedirectToAction(nameof(HomeController.Index), "Home"); 
      } 
      AddErrors(result); 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

Notez que j'ai vérifié ma base de données et FirstName et LastName sont stockés!

Je puis étendu mon identité (Notez que j'enlevé le retour d'origine, pour vérifier si elle en effet retourné null)

public static class IdentityExtension 
{ 
    public static string GetFirstName(this IIdentity identity) 
    { 
     var claim = ((ClaimsIdentity)identity).FindFirst("FirstName"); 
     // Test for null to avoid issues during local testing 
     // return (claim != null) ? claim.Value : string.Empty; 
     return claim.ToString() ; 
    } 


} 

je maintenant que je devrais être en mesure d'accéder aux données de mon point de vue de rasoir, qui est en _Navigation.cshtml

@if (Context.User.Identity.IsAuthenticated) 
      { 
       <div class="dropdown profile-element"> 
        <a data-toggle="dropdown" class="dropdown-toggle" href="#"> 
         <span class="clear"> 
          <span class="block m-t-xs"> 
           <strong class="font-bold">Hello @User.Identity.GetFirstName()</strong> 
          </span> 

J'ai aussi essayé de le faire sans l'extension, directement:

@{ 
if (Context.User.Identity.IsAuthenticated) 
{ 
    var FirstName = ((ClaimsIdentity)User.Identity).FindFirst("FirstName"); 
} 
} 

Je suis évidemment manquant quelque chose .. Je peux accéder au nom d'utilisateur régulier sans problème. J'ai cherché et trouvé beaucoup pour arriver ici, mais une grande partie de ce sont des versions différentes, donc im stuck ..

J'apprécierais si vous pouvez m'aider!

Merci.

Répondre

-1
+0

vous souhaite la bienvenue, heureux que vous l'avez travailler. – zulq

+1

[Je pense que les liens sont fantastiques, mais ils ne devraient jamais être la seule information dans votre réponse.] (Http://meta.stackexchange.com/a/8259/171858). –