我想将jwt从swift客户端传递到node.js websocket服务器进行身份验证。我已经在swift中实现了本地websocket客户端。我为node.js客户端找到了一些解决方案,他们在其中这样做-
WebSocket = require 'ws'
ws = new WebSocket 'ws://localhost:8000',{
headers : {
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaW9zdHJlYW1lciJ9.oNx-4e9hldyATpdPZghd_sjX8DhTkQFVDBxIhKh4MC4"
}
}
那么我怎么能在swift客户端上做这件事呢?我也试图在swift中像上面一样通过,但给了我错误。
如果您正在寻找一个在iOS中使用WebSockets的库,请查看这一点。
然后,您可以在URLRequest
本身中添加标题:
(来自图书馆页面上的示例(
var request = URLRequest(url: URL(string: "http://localhost:8080")!)
/// YOU WANT THIS
request.addValue("TOKEN", forHTTPHeaderField: "Authorization")
/// YOU WANT THIS
request.timeoutInterval = 5
socket = WebSocket(request: request)
socket.delegate = self
socket.connect()
我建议在示例中提到的Authorization
标头中发送令牌,因为这是一种标准做法。但是,如果您想将其作为Node.js示例发送,请将Authorization
替换为token
。
以及带有您要发送的令牌的TOKEN
。
编辑即使您没有使用此库,过程也是类似的。
我得到了答案,它很简单,我不能把整个代码放进去,但你们理解这个-
var webSocketTask: URLSessionWebSocketTask!
var url = URLRequest(url: URL(string: "ws://localhost:8000")!)
url.addValue("Your_Jwt_Token", forHTTPHeaderField: "Authorization")
webSocketTask = urlSession.webSocketTask(with: url)
或者,如果你想通过协议传递jwt_Token
,那么你可以这样做-
webSocketTask = urlSession.webSocketTask(with: URL(string: "ws://localhost:8000")!, protocols: ["Your_Jwt_Token"])
以上结果产生以下标题-
Sec-WebSocket-Protocol: "Your_jwt_Token"