2

我使用Web Api的Visual Studio模板附帶的個人用戶帳戶的開箱即用身份驗證。我在Angular.js前端使用api。使用Web Api/OWIN身份驗證令牌時的額外信息

毫不奇怪,我需要存儲關於用戶的額外信息,如名字和姓氏。我想在Register方法中設置這些額外的值。

問:我應該擴展用戶模型還是應該將這些信息存儲爲聲明?

如果這個信息被自動地從/ Token的響應中返回而不添加額外的代碼,這將是一種獎勵。

+1

發現這一點:HTTP://計算器.COM /問題/ 26357054 /返回更信息到該客戶端 - 使用 - OAuth的無記名代幣代和-owin式 –

回答

0

我決定在/Token調用的響應中返回額外信息。

ApplicationOAuthProvider(這是模板項目的一部分),我在第2位變爲CreateProperties和調整呼叫CreateProperties通用戶,而不僅僅是用戶名:

public static AuthenticationProperties CreateProperties(ApplicationUser user) 
      { 
       var firstNameClaim = user.Claims.FirstOrDefault(c => c.ClaimType == ClaimTypes.GivenName); 
       var lastNameClaim = user.Claims.FirstOrDefault(c => c.ClaimType == ClaimTypes.Surname); 
       var roles = user.Claims.Where(c => c.ClaimType == ClaimTypes.Role).Select(c => c.ClaimValue); 

       IDictionary<string, string> data = new Dictionary<string, string> 
       { 
        { "userName", user.UserName }, 
        {"firstName", firstNameClaim != null ? firstNameClaim.ClaimValue : "" }, 
        {"lastName", lastNameClaim != null ? lastNameClaim.ClaimValue : "" }, 
        {"roles", string.Join(",", roles) } 
       }; 

       return new AuthenticationProperties(data); 
      }