我正在尝试在角度客户端和Spring Boot服务器之间创建套接字连接。
const ws = new SockJS(this.addressStorage.apiAddress + '/socket', null, {
sessionId: function (): string {
return that.authManager.playerId + ':' + lobbyName + ':' + uuid();
}
});
自从我在服务器上启用WebSecurity以来,我需要授权每个请求,包括sockjs握手。因此,在创建SockJS时,会弹出以下窗口:
我不希望用户在客户端与服务器建立套接字连接时再次输入其登录名和密码。不幸的是,不可能使用SockJS添加Authorization标头,所以我决定使用拦截器。
此拦截器无法捕获SockJS握手:
export class SocketInterceptorService implements HttpInterceptor {
constructor(private authManager: AuthManagerService) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(req.url);
console.log(req);
// req = req.clone({
// setHeaders: {
// Authorization: this.authManager.basicToken
// }
// });
return next.handle(req);
}
}
那么我该如何拦截SockJS握手以便自动授权SockJS连接?