1. 程式人生 > 實用技巧 >.NetCore3.1 使用JWT認證授權時獲取當前請求的使用者名稱

.NetCore3.1 使用JWT認證授權時獲取當前請求的使用者名稱

最近使用JWT來給WebApi進行授權認證,在專案中使用 HttpContext.User.Identity.Name 獲取當前登入的使用者名稱一直獲取不到,以往都是這樣獲取,這個問題查了很久都沒找到相關資料

特此記錄一下,避坑。

在JWT生成Token時一定要加入ClaimTypes.Name這樣才能獲取到使用者名稱

public static string GetToken(string userName)
        {
            var claims = new List<Claim>();
            claims.AddRange(new[] {
                new Claim(ClaimTypes.Name, userName),
                new Claim(JwtRegisteredClaimNames.Sub, userName),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.Now.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)
            });
            var tokenManagement = UtilConfHelper.GetTokenManagement();
            DateTime now = DateTime.Now;
            var jwtSecurityToken = new JwtSecurityToken(
                issuer: tokenManagement.Issuer,
                audience: tokenManagement.Audience,
                claims: claims,
                notBefore: now,
                expires: now.Add(TimeSpan.FromMinutes(tokenManagement.AccessExpiration)),
                signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(tokenManagement.Secret)), SecurityAlgorithms.HmacSha256)
            );
            string token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
            return token;
        }

獲取就使用Response.HttpContext.User.Identity.Name 獲取userName

分類:.NetCore 好文要頂關注我收藏該文 五峰
關注 - 0
粉絲 - 0 +加關注 0 0 «上一篇:在Jenkins容器中安裝docker-compose
»下一篇:.NetCore3.1 使用Autofac獲取IContainer posted @2020-10-24 19:01五峰 閱讀(361) 評論(0)編輯收藏

重新整理評論重新整理頁面返回頂部 發表評論 編輯預覽

退出訂閱評論我的部落格

[Ctrl+Enter快捷鍵提交]

【推薦】News: 大型組態、工控、模擬、CADGIS 50萬行VC++原始碼免費下載
【推薦】有你助力,更好為你——部落格園使用者消費觀調查,附帶小驚喜!
【推薦】部落格園x絲芙蘭-聖誕特別活動:聖誕選禮,美力送遞
【推薦】了不起的開發者,擋不住的華為,園子裡的品牌專區
【福利】AWS攜手部落格園為開發者送免費套餐+50元京東E卡
【推薦】未知數的距離,毫秒間的傳遞,聲網與你實時互動
【推薦】新一代 NoSQL 資料庫,Aerospike專區新鮮入駐 相關博文:
·.NETcore中使用jwt來對api進行身份驗證
·JWT
·jwt