自定义Token获取方式
JwtBearer认证中,默认是通过Http的Authorization头来获取的,这也是最推荐的做法,但是在某些场景下,我们可能会使用Url或者是Cookie来传递Token,那要怎么来实现呢?
其实实现起来非常简单,如前几章介绍的一样,JwtBearer也在认证的各个阶段为我们提供了事件,来执行我们的自定义逻辑:
.AddJwtBearer(o =>
{
o.Events = new JwtBearerEvents()
{
OnMessageReceived = context =>
{
context.Token = context.Request.Query["access_token"];
return Task.CompletedTask;
}
};
o.TokenValidationParameters = new TokenValidationParameters
{
...
};
});
- 然后在Url中添加access_token=[token],直接在浏览器中访问:
同样的,我们也可以很容易的在Cookie中读取Token,就不再演示。
- 除了OnMessageReceived外,还提供了如下几个事件:
- TokenValidated:在Token验证通过后调用。
- AuthenticationFailed: 认证失败时调用。
- Challenge: 未授权时调用。