zoukankan      html  css  js  c++  java
  • .Net Core WebApi解析jwt携带的payload信息

    JWT(Json Web Token)实现了一种便捷的身份认证方案,我们可以在它的payload中携带一些信息, 例如登录用户的id,角色等信息, 如果这些信息被篡改了,除非对方破解的签发token的securitykey,否则系统在认证身份时是不会通过的,因此可以保证信息的真实性。

    那么在webapi中怎样使用这些信息呢?

    首先,token是携带在Request Header里的:

    string authHeader = this.HttpContext.Request.Headers["Authorization"];

    获取到的authHeader的内容是由一个DefaultAuthenticateScheme和token拼接成的,这个DefaultAuthenticateScheme由startup.cs里配置:

    services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })

    这里使用default值的话,是“Bearer ”。把“Bearer ”替换掉以后,获取到的就是token。

    然后对token进行解析:

    
    
      string tokenStr = authHeader.Replace("Bearer ", "");
      var handler = new JwtSecurityTokenHandler();
      var payload = handler.ReadJwtToken(tokenStr).Payload;
      var claims = payload.Claims;
     

    JwtSecurityTokenHandler()的命名空间为:

    using System.IdentityModel.Tokens.Jwt;

    最后获取到的claims的类型为IEnumerable<Claim>,根据签发token时设置的内容,就可以读取payload里的信息了:

    var userid = claims.First(claim => claim.Type == "userId").Value;
  • 相关阅读:
    前端mvc mvp mvvm 架构介绍(vue重构项目一)
    SPA页面缓存再优化二
    消除浏览器对input输入框的自动填充
    单页面系统的一些性能优化
    城市联动组件插件思想分析
    前端性能优化点总结
    ui-router 1.0以上的 $stateChangeStart
    (转) view视图的放大、缩小、旋转
    (转)代码中实现button
    objective-c 强弱引用、properties的学习
  • 原文地址:https://www.cnblogs.com/carroty/p/13037397.html
Copyright © 2011-2022 走看看