如果验证授权是使用请求头的。在客户端添加了请求头Authorization,在服务端的hub中也是获取不到的。查看客户端的连接请求的时候发现ws//…中没有请求头,而是包含access_token中,所以需要在服务端处理一下请求,在验证授权前可以通过中间件处理或者在获取请求头前,前把access_token参数值放到请求头里面。
比如:
var authHeader = Request.Headers["Authorization"].ToString();
var access_token = Request.Query["access_token"].ToString();
if (access_token.IsNotNullOrWhiteSpace())
{
Request.Headers["Authorization"] = "Bearer " + access_token;
authHeader = "Bearer " + access_token;
}
当客户端通过WebSocket发送带有Authorization请求头的连接请求时,服务端可能无法直接获取该头信息,因为access_token存在于URL查询参数中。为了解决这个问题,可以在服务端创建一个中间件或者在处理请求之前,将access_token移到请求头中,例如:`Request.Headers[Authorization]=Bearer+access_token;`这样确保了授权信息的正确传递。

742

被折叠的 条评论
为什么被折叠?



