自定义Token获取方式

  • JwtBearer认证中,默认是通过Http的Authorization头来获取的,这也是最推荐的做法,但是在某些场景下,我们可能会使用Url或者是Cookie来传递Token,那要怎么来实现呢?

  • 其实实现起来非常简单,如前几章介绍的一样,JwtBearer也在认证的各个阶段为我们提供了事件,来执行我们的自定义逻辑:

  1. .AddJwtBearer(o =>
  2. {
  3. o.Events = new JwtBearerEvents()
  4. {
  5. OnMessageReceived = context =>
  6. {
  7. context.Token = context.Request.Query["access_token"];
  8. return Task.CompletedTask;
  9. }
  10. };
  11. o.TokenValidationParameters = new TokenValidationParameters
  12. {
  13. ...
  14. };
  15. });
  • 然后在Url中添加access_token=[token],直接在浏览器中访问:

自定义Token获取方式 - 图1

同样的,我们也可以很容易的在Cookie中读取Token,就不再演示。

  • 除了OnMessageReceived外,还提供了如下几个事件:
    • TokenValidated:在Token验证通过后调用。
    • AuthenticationFailed: 认证失败时调用。
    • Challenge: 未授权时调用。